在MouseDoubleClick事件上刷新绑定DataGrid

时间:2014-09-05 09:30:17

标签: c# wpf linq datagrid observablecollection

在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)

1 个答案:

答案 0 :(得分:1)

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

有关此主题的详情,请参阅MSDN上的Data Binding Overview页面。