2014-09-05 42 views
0

在一个ListBoxItem的一个绑定的DataGrid中,我有一个MouseDoubleClick事件是这样的:刷新上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(); 
} 

什么是应该做的是实现一个LINQ要求转化到DbSet称为Resultat。这是一个简单的过滤器,在这种情况下是“Remarque”。一旦这个过滤器在DbSet应用,我需要刷新DbSet“雷马克”

的DataGrid的约束性指标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)

回答

1

WPF是而不是 WinForms。没有DataGrid.Refresh方法。我们做而不是刷新我们的UI控件。在WPF中,我们使用数据绑定并实现INotifyPropertyChanged接口来在UI和我们的代码之间传播属性更改或查看模型。因此,当我们对数据对象或数据绑定到UI控件的对象进行更改时,更新是即时的。因此,我们不需要“刷新”任何东西。

有关此主题的更多信息,请参阅MSDNDN上的Data Binding Overview页面。