C# WPF:多用户界面&x27;触发一个命令

C# WPF:多用户界面&x27;触发一个命令,c#,wpf,mvvm,plot,C#,Wpf,Mvvm,Plot,场景 您要执行分析并绘制结果。您的分析结果显示在不同的UI组件上,您还可以使用其他一些UI组件自定义绘图。在这方面,让我们假设: 您有显示分析结果的Datagrid_1 用于选择绘图分辨率的组合框 一些单选按钮,用于选择绘图类型(即条形图、热图等) 最后,您有一个小的datagrid(datagrid_2),您可以选择不同的回归模型 简单地说,您可以使用一个按钮,它的命令绑定到一个函数,该函数将根据您对UI元素的选择更新绘图。这是通过让您选择您的首选项,然后单击按钮来实现的。但是,为了改善用

场景

您要执行分析并绘制结果。您的分析结果显示在不同的UI组件上,您还可以使用其他一些UI组件自定义绘图。在这方面,让我们假设:

  • 您有显示分析结果的
    Datagrid_1
  • 用于选择绘图分辨率的组合框
  • 一些
    单选按钮
    ,用于选择绘图类型(即条形图、热图等)
  • 最后,您有一个小的datagrid(
    datagrid_2
    ),您可以选择不同的回归模型
简单地说,您可以使用一个
按钮
,它的
命令
绑定到一个函数,该函数将根据您对UI元素的选择更新绘图。这是通过让您选择您的首选项,然后单击
按钮来实现的。但是,为了改善用户体验,我们希望使流程自动化。这意味着您的任何选择一旦更改,绘图就会自动更新。这意味着:我们完全删除了
按钮

If `DataGrid_1` `selectedItem` is changed
If `Combobox` `selectedIndex` is changed
If a `RadioButton` is `Checked`
If `DataGrid_2` `selectedItem` is changed
     I would like the plot to be refreshed.
问题

考虑到我的应用程序是以
MVVM
模式实现的,对于我的场景来说,什么是最好的解决方案?

1)为可能选择的evert筛选器创建一个属性。这些不需要通知变更

2) 将该属性绑定到grid和combo的selectedItem

3) 为每个收音机创建一个bool属性,并将其绑定到收音机的IsChecked属性

4) 将旧的Refresh命令绑定到grid和combo的SelectedItem changed,以及每个收音机的Checked和Unchecked。您必须使用交互触发器来实现这一点

5) 使目标网格的itemsSource通知更改

6) 将刷新命令更改为使用这些过滤器属性,并将结果设置为itemsSource属性


如果没有人回答,时间允许,我明天会发布一些代码示例

因为您使用的是MVVM模式,所以一种简单的方法是,当数据绑定属性发生更改时,触发Datagrid_1的数据刷新

e、 g


上述哪些UI元素参与选择结果?从你的文本中,我会说DataGrid1是经过过滤的,对吗?是的,
datagrid_1
选择结果。
private Object _selectedComboBoxProperty;
public Object SelectedComboBoxProperty 
{
   get { return _selectedComboBoxProperty; }
   set { 
       _selectedComboBoxProperty = value;

       // Notify property changed
       OnPropertyChanged("SelectedComboBoxProperty");

       // Update Datagrid_1
       UpdateResults();
}

private void UpdateResults()
{
   // Inspect the current values of your selection properties

   // Some business logic to filter the results


   // Refresh the collection bound to the Datagrid_1

}