我如何在WPF ListView中执行此操作

时间:2011-04-13 02:19:53

标签: wpf listview

我有这个项目我喜欢使用WPF ListView

  1. 它看起来像Winform中的PropertyGrid。我已经在网上找到了一些实现,哪个是最好的?

  2. 来自what I learn,我只能绑定一个来自DependencyObject的类,是否可以绑定一个通用的List或Dictionary,myClass将包括name,value,type(string,double,bool,lookup list) ,...)。一旦我绑定它,它将添加相关模板,例如对于查找列表,它将在celltemplate中添加组合框。

  3. 此外,我喜欢在配置文件中包含所有内容。例如我有这个配置:

    Name1,Value1,string Name2,Value2,bool Name3,Value3,lookup,N3_option1,N3_option2,N3_option3,...

    我的代码首先读取配置文件,然后从那里,我从数据库中读取Name1 / Name2 / Name3,在我的ListView中显示它们,从Name3中,你从(N3_option1,N3_option2,N3_option3,...)中选择值。

    如果你能指出正确的方向,我会非常感激。

  4. 更新: 这是我正在看的3个例子:

    DataTemplates in Action: Building a simple PropertyGridWPF PropertyGrid - MVVM techniquesWPF Property Grid

    “WPF Property Grid”对于像我这样的初学者来说太复杂了。就个人而言,我更喜欢“DataTemplates in Action:构建一个简单的PropertyGrid”。

    它还有代码选择DataTemplate依赖于每个类属性的DataType:bool使用BooleanDataTemplate这是一个复选框;枚举使用EnumDataTemplate这是一个组合框。

    我还想进一步添加自定义类型:lookup,它将显示为下拉列表,但值列表来自数据库。 e.g。

    属性名称:car manufacturere,值来自“SELECT LOOKUP_VALUE FROM LOOKUP WHERE LOOKUP_KEY ='CAR_MFG'”,这将返回如下列表:丰田,福特,日产,本田,大众,宝马......

    如果我有> 1个查找属性,我怎么能指定它们? LookupDataTemplate1,LookupDataTemplate2,...,然后如何在XAML Resources中指定它们。并且所有DataTemplate都是在XAML中预定义的,在这种情况下我是如何做到的。

    类似于EnumToListConverter,我如何创建LookupmToListConverter1,LookupmToListConverter2?

1 个答案:

答案 0 :(得分:1)

1)我不确定这里的问题是什么。您可以使用ListView来完成它,只需要它很好地适合您的数据。鉴于你所写的内容,这听起来很合理。

2)您可以创建一个列表或词典的DependencyProperty并以这种方式绑定它。您还可以使用ObservableCollection<T>类(基本上是一个通知其状态发生变化的列表)并绑定到它。您还可以使用任何其他使用INotifyPropertyChanged的类并绑定到该类。通过模板添加组合框听起来合适。

3)听起来你需要一个类来从你的配置中读取,然后将它显示到列表视图中。这些将是您的视图模型。您可以为此创建一个实现INotifyPropertyChanged的类。你有三个领域1)名称2)价值,3)潜在价值。名称和值都是字符串。我假设Name是单向绑定,Value是对组合框的双向绑定,其组合项绑定到Potential Values。然后,您将创建这些对象的ObservableCollection<T>并将ListView绑定到该对象。对此集合进行序列化和反序列化应该相对简单。