C# WPF Prism MVVM-从视图模型规则高亮显示视图上的网格单元?

C# WPF Prism MVVM-从视图模型规则高亮显示视图上的网格单元?,c#,wpf,mvvm,prism,C#,Wpf,Mvvm,Prism,假设我有一个网格控件,无论是普通WPF网格还是DevXpress网格或其他,它被数据绑定到一组金融头寸,每设置一个间隔(比如说,2-3秒)刷新一次。一般来说,我对Prism和WPF还是比较陌生的 因为视图模型不应该对它所绑定的视图做出任何假设,甚至假设有一个网格,我如何实现多个规则,比如说,我希望一个单元格根据基于同一行中其他值的某些条件在网格中高亮显示?(例如,如果一行x>a+b) 或者更复杂的事情,比如对视图模型调用某种计算方法来获得所需的条件?(否则,我可以在第一个示例中使用数据触发器)

假设我有一个网格控件,无论是普通WPF网格还是DevXpress网格或其他,它被数据绑定到一组金融头寸,每设置一个间隔(比如说,2-3秒)刷新一次。一般来说,我对Prism和WPF还是比较陌生的

因为视图模型不应该对它所绑定的视图做出任何假设,甚至假设有一个网格,我如何实现多个规则,比如说,我希望一个单元格根据基于同一行中其他值的某些条件在网格中高亮显示?(例如,如果一行x>a+b)

或者更复杂的事情,比如对视图模型调用某种计算方法来获得所需的条件?(否则,我可以在第一个示例中使用数据触发器)


如何从视图模型中设计并公开此行为,以及如何在视图上设置绑定表达式,以便它们在每次勾选时自动重新计算和更新自身?(无需减速)

您可以对这两个示例使用数据触发器……您可以公开行可以绑定到的属性,该属性调用方法或运行其他属性的计算。然后,您可以在此属性上调用PropertyChanged,您的行将根据您的视图逻辑进行更新…至于“无减速”,这样做将取决于正在运行的计算

您可以对这两个示例使用数据触发器……您可以公开一个属性,您的行可以绑定到该属性,该属性调用方法或运行其他属性的计算。然后,您可以在此属性上调用PropertyChanged,您的行将根据您的视图逻辑进行更新……至于“不减速”,这样做将取决于正在运行的计算,触发器将设置为在基础对象上键入的视图资源中的样式,对吗?如果网格绑定到基础对象未实现INotifyPropertyChanged的ObservableCollection,会发生什么情况?1)样式将在GridRow上键入(如果您要更改其属性的控件)2)为T编写一个实现INotifyPropertyChanged的包装器并将ObservableCollection绑定到新类可能是明智的。明白了-因此基本上网格只能找出底层数据已经更改,从而通过数据触发器应用高亮度,如果是,则基础绑定对象支持通过setter提供的更改通知接口,该setter将引发PropertyChanged?(你能把这个作为一个答案,这样我就可以给你信用)当然…只是记住你这个属性不一定要有一个setter。它可以是只读的,只有一个getter,并且您的PropertyChanged通知可以来自代码中的任何地方。