刷新鼠标双击事件上的绑定数据网格

本文关键字:绑定 数据 数据网 网格 鼠标 双击 事件 刷新 | 更新日期: 2023-09-27 18:20:41

在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();
}

它应该做的是将一个LinQ请求实现到名为Resultat的DbSet中。这是一个列中的简单过滤器,在本例中为"Remarque"。在DbSet中应用此筛选器后,我需要刷新DbSet"Remarque"的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)

刷新鼠标双击事件上的绑定数据网格

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

有关此主题的详细信息,请参阅MSDN上的"数据绑定概述"页。