现在我有一个表(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更改
答案 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界面才能实现此目的。