【问题标题】:How do I do this in WPF ListView如何在 WPF ListView 中执行此操作
【发布时间】:2011-04-13 02:19:53
【问题描述】:

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

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

  2. 来自what I learn,我只能从 DependencyObject 绑定一个类,是否可以绑定通用列表或字典,myClass 将包括名称、值、类型(字符串、双精度、布尔值、查找列表、. ..)。一旦我绑定它,它将添加相关模板,例如对于查找列表,它将在单元格模板中添加组合框。

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

    名称1,值1,字符串 名称 2,值 2,布尔值 Name3, Value3, 查找, N3_option1, N3_option2, N3_option3, ...

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

    如果您能给我指出正确的方向,我将不胜感激。

更新: 这是我正在查看的 3 个示例:

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

“WPF 属性网格”对于像我这样的初学者来说太复杂了。就个人而言,我更喜欢“DataTemplates in Action: Building a simple PropertyGrid”。

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

我还想更进一步,添加自定义类型:查找,它将显示为下拉列表,但值列表来自数据库。例如

属性名称:汽车制造商,值来自“SELECT LOOKUP_VALUE FROM LOOKUP WHERE LOOKUP_KEY = 'CAR_MFG'”,它将返回如下列表:Toyota, Ford, Nissan, Honda, VW, BMW, ...

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

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

【问题讨论】:

    标签: wpf listview


    【解决方案1】:

    1) 我不确定这里的问题是什么。您可以使用 ListView 来做到这一点,这只是它是否适合您的数据的问题。考虑到您写的内容,这听起来很合理。

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2011-11-21
      • 1970-01-01
      • 2010-10-29
      相关资源
      最近更新 更多