繁体   English   中英

WPF事件用于DataGrid更新

[英]WPF event for DataGrid update

我有一个带有dataGrid的视图:

<DataGrid x:Name="DARViewer"
                      AutoGenerateColumns="True"
                      ItemsSource="{Binding DataSourceTable,
                                            NotifyOnSourceUpdated=True,
                                            UpdateSourceTrigger=Default}" />

我也有10个按钮,每次单击一个按钮,我都会调用一个命令来更新DataSourceTable(这是ViewModel中的datatable属性)。
代码工作正常,每次我单击按钮时,datagrid都有相应的数据。

我的问题是,每次更改DataSourceTable时都找不到引发的datagrid事件。

PS。 我想DARViewer.DataContextChanged(有意义)和DARViewer.SourceUpdated,但他们没有工作

通过按钮执行的命令是:

  Private Sub LoadReportExecute(sender)
    Id = sender.DataContext.Id
    ChangeDataSourceTable()
  End Sub

 Public Sub ChangeDataSourceTable()
    DataSourceTable = Nothing
    DataSourceTable = ExecuteCommand(DataSource) 'that just returns a datatable
 End Sub

 Private mdtDataSourceTable As  DataTable
 Public Property DataSourceTable() As DataTable
    Get
        Return mdtDataSourceTable
    End Get
    Set(ByVal value As DataTable)
        mdtDataSourceTable = value
        RaisePropertyChanged("DataSourceTable")
    End Set
 End Property

您可以使用ItemsSourceChangedEvent。

有关更多信息,请参见此处提供的答案:

更改DataGrid.ItemsSource时如何引发事件

在Marcus提供的解决方案之后,我将为VB.NET发布相同的解决方案和代码,以防万一有人需要它。

 Private Sub ReportView_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    Dim gridItemsSourceDescriptor As DependencyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(DataGrid.ItemsSourceProperty, GetType(DataGrid))
    gridItemsSourceDescriptor.AddValueChanged(Me.DARViewer, _
                                               New EventHandler(AddressOf OnDataGridItemsSourceChanged))
End Sub


Private Sub OnDataGridItemsSourceChanged(sender As Object, e As EventArgs)
    'Code here
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM