我是新来的WPF。我尝试做一个DataGrid,它绑定在我的实体框架模型表中。我的桌子的名字是:单词。我试图做简单的字典。 我使用SQL Sever Compact,WPF,Entity框架。WPF DataGrid不会更新后源元素
然而,好的工作去除表中的记录后...从数据网格行desapers
你能告诉我为什么添加记录他们没有inseted到DataGrid的实体后? 关闭程序并再次打开后,记录在DataGrid中。
这里是我的DataGrid窗口代码:
<Grid>
<Grid>
<DataGrid IsReadOnly="True" AutoGenerateColumns="False" Name="dataGrid" DataContext="{Binding }" ItemsSource="{Binding}" Margin="0,90,0,0">
<DataGrid.Columns>
<DataGridTextColumn Header="Sentence" Binding="{Binding Path=sentence}" />
<DataGridTextColumn Header="Translation" Binding="{Binding Path=translation}" />
<DataGridTemplateColumn Header="Operations">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Delete" Click="Button_Click" Tag="{Binding Path=id}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="sentence" VerticalAlignment="Top" Width="153" />
<TextBox Height="23" Margin="171,12,131,0" Name="translations" VerticalAlignment="Top" AcceptsReturn="True" />
<Button Content="Add" Height="23" HorizontalAlignment="Left" Margin="90,41,0,0" Name="addBtn" VerticalAlignment="Top" Width="75" Click="addBtn_Click" />
</Grid>
这里是我的C#代码:
public partial class AddWordWnd : Window {
static dbEntities db = new dbEntities();
public AddWordWnd() {
InitializeComponent();
dataGrid.DataContext = db.Words;
dataGrid.Visibility = System.Windows.Visibility.Visible;
}
private void Button_Click(object sender, RoutedEventArgs e) {
Button btn = sender as Button;
System.Guid ii = System.Guid.Parse(btn.Tag.ToString());
MessageBox.Show(ii.ToString());
db.DeleteObject(db.Words.Single(w => w.id == ii));
db.SaveChanges();
}
private void addBtn_Click(object sender, RoutedEventArgs e) {
System.Guid gg = System.Guid.NewGuid();
db.Words.AddObject(new Words() { id = gg, sentence = translations.Text, translation = sentence.Text });
db.SaveChanges();
dataGrid.Items.Refresh();
}
}
我的数据库表的结构:
Words
---------------
id uniqueidentifier rowguidcol not null primary key,
sentence nvarchar(255) not null,
translation nvarchar(255) not null,
感谢您的答复,但它仍然didnt解决我的问题...:/ – nosbor
只是注意到你直接绑定到上下文。默认情况下,这并不会引发CollectionChanged事件来告诉您的DataGrid项目已更改,因此DataGrid不会尝试重新读取它的ItemsSource。尝试在绑定上手动引发PropertyChanged事件 – Rachel
如果您告诉我该如何做到这一点,那将非常有用。即时通讯新的WPF。这是我在WPF写东西的第二天。 – nosbor