在ListBoxItem上,我有一个像这样的MouseDoubleClick事件:
<ListBox HorizontalAlignment="Left" Height="84" Margin="97,599,0,0" VerticalAlignment="Top" Width="88">
<ListBoxItem MouseDoubleClick="Ajout_MouseDoubleClick" Name="Ajouts" Content="Ajouts"/>
The event is as follow:
private void Ajout_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DbSet<Resultat> res = cnn.Resultat;
var add = from a in res
where a.Remarque.Equals("Ajoute")
select new { a.Groupe_D_alerte, a.LibelléTOTApres, a.LibelléTOTAvant, a.NomChamp, a.NomTable, a.Remarque, a.SiModifie, a.TOTMPMRQ };
cnn.SaveChanges();
DonneesBrutes.Items.Refresh();
}
它应该做的是在DbSet中实现一个名为Resultat的LinQ请求。它是一列中的简单过滤器,&#34; Remarque&#34;在这种情况下。一旦在DbSet中应用了这个过滤器,我就需要刷新DbSet的DataGrid绑定目标&#34; Remarque&#34;
DataGrid如下所示:
<DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=.ResultatCollection}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="PMRQ" Width="*" Binding="{Binding Path=.TOTMPMRQ}" Header="PMRQ"></DataGridTextColumn>
<DataGridTextColumn x:Name="LibellePMRQ" Width="*" Binding="{Binding Path=.LibelléTOTApres}" Header="Libellé PMRQ"></DataGridTextColumn>
<DataGridTextColumn x:Name="Ligne" Width="*" Binding="{Binding Path=.Remarque}" Header="Ligne"></DataGridTextColumn>
<DataGridTextColumn x:Name="OTM" Width="*" Binding="{Binding Path=.TOTMPMRQ}" Header="OTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="TOTM" Width="*" Binding="{Binding Path=.SiModifie}" Header="TOTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="LibelleTOTM" Width="*" Binding="{Binding Path=.LibelléTOTApres}" Header="Libellé OTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="GA" Width="*" Binding="{Binding Path=.Groupe_D_alerte}" Header="GA"></DataGridTextColumn>
<DataGridTextColumn x:Name="Discipline" Width="*" Binding="{Binding Path=.NomTable}" Header="Discipline"></DataGridTextColumn>
<DataGridTextColumn x:Name="DisciplineSubstituee" Width="120" Binding="{Binding Path=.NomChamp}" Header="Discipline Substituée"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
当我双击时,脚本会自行执行,但它什么也没发生,我没有看到DataGrid中应用的过滤器(要将数据从DbSet绑定到DataGrid,我使用的是ObservableCollection)
答案 0 :(得分:1)
WPF 不是 WinForms。没有DataGrid.Refresh
方法。我们不刷新我们的UI控件。在WPF中,我们使用数据绑定并实现INotifyPropertyChanged
接口来传播UI与我们的代码或视图模型之间的属性更改。因此,当我们更改数据对象或绑定到UI控件的数据的对象时,立即更新。因此,我们没有必要“刷新”任何东西。
有关此主题的详情,请参阅MSDN上的Data Binding Overview页面。