从代码背后更新表格显示?

时间:2018-02-12 14:51:25

标签: c# wpf mvvm

现在我有一个表(SelectedModule.Vwr),它会在所选模块更改时更新。

 <ContentControl x:Name="MainTableCtrl" Content="{Binding SelectedModule.Vwr, UpdateSourceTrigger=PropertyChanged}" Grid.Row="0"/>

我想做的是在后面的代码中过滤表格。因此,我不会直接绑定到表,而是绑定到过滤表。

public MainTableViewModel FilteredMain
{
    get { //filter results here
          return SelectedModule.Vwr; }
    set { }
}

但是我在更新表时遇到了一些麻烦。该表不再正确更新它的显示。一旦SelectedModule更改,FilteredMain仍会显示原始表。

我想知道如何在事件发生后告诉用户界面再次更新它的来源。在这种情况下,源将是FilteredMain,事件将是SelectedModule更改

1 个答案:

答案 0 :(得分:0)

  

SelectedModule从后面的代码更改时,是否有人知道如何触发更新源?

聆听DataTable Events,并在任何引发任何内容时为PropertyChanged属性举起FilteredMain事件:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();

        ...
        dataTable.RowChanged += (ss, ee) => 
        {
            //invoke the getter of the FilteredMain
            NotifyPropertyChanged("FilteredMain");
        };
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    ...
}

您需要实现INotifyPropertyChanged界面才能实现此目的。

相关问题