WPF和ObservableCollection

我有一个我要显示的ObservableCollectionIRuleCondition接口由我想要显示的2个不同的类使用, RuleCondition只显示一个规则条件(诸如优先级,要检查的属性等信息),以及一个RuleConditionGroup ,可以包含2个或更多RuleConditions ,以任何条件可以匹配的方式分组,或者全部等。

在XAML中,我想知道是否有一种方法可以显示不同的ListView.ItemTemplate具体取决于它在ObservableCollection遇到的类型? 或者我需要实现两个不同的ObservableCollection

这是一个如何工作的简单示例

这是对象的定义方式

 public interface Person { string Name { get; set; } } public class Manager : Person { public string Name { get; set; } } public class Employee : Person { public string Name { get; set; } public string ManagerName { get;set;} } 

这是后面的MainWindow代码

 public partial class MainWindow : Window { ObservableCollection mPeople = new ObservableCollection(); public ObservableCollection People { get { return mPeople; } } public MainWindow() { DataContext = this; mPeople.Add( new Employee{ Name = "x" , ManagerName = "foo"}); mPeople.Add( new Manager { Name = "y"}); InitializeComponent(); } } 

这是MainWindow XAML

                   

如您所见,有两个数据窗口,一个用于Manager,另一个用于Employee

在此处输入图像描述

这就是糟糕的输出看起来的样子。 请注意,与经理相比,员工显示的绿色和红色背景和额外字段

只需在参考资料部分定义两个不同的DataTemplates,每个RuleCondition类型一个。

1)创建两个不同的数据模板,就像你说的那样。 2)创建自定义DataTemplateSelector以选择适当的模板。

您的一条评论声明您从DataTemplateSelector收到错误。 validation您是否正确实现了类,也许粘贴您的实现。 它应该相当小而且直截了当。