【问题标题】:Refresh a Bound DataGrid on a MouseDoubleClick event在 MouseDoubleClick 事件上刷​​新绑定的 DataGrid
【发布时间】:2014-10-30 05:18:56
【问题描述】:

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

【问题讨论】:

    标签: c# wpf linq datagrid observablecollection


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2011-08-15
      • 2011-05-25
      • 2012-07-25
      • 2012-07-05
      相关资源
      最近更新 更多