簡體   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