为项目列表选择正确的控制

时间:2011-01-31 20:28:58

标签: c# wpf xaml mvvm

我是WPF和MVVM的新手。在我的ViewModel我收集了一些项目,例如:

class Item {
    string Title {get; set;}
    string Description {get; set;}
}

我想创建一个视图,所以在开始时我会:

Title1
Title2
Title3

如果用户点击其中一个标题,它将展开以显示描述,例如:

Title1
Description1
Title2
Title3

如果用户点击其他标题,则会有两个展开的项目:

Title1
Description1
Title2
Description2
Title3

这可能与Expander控件非常相似,也许我可以使用它,但我正在以其他方式这样做,以学习新东西。

我应该为此目的使用什么控制?应该是ItemsControl还是ListBox

我想,如果我使用ItemsControl,我应该扩展我的Item类,使其具有类似bool IsExpanded的内容,并将UI项可见性绑定到该值。但也许我可以使用ListBox并以某种方式将UI项目可见性绑定到......是的,对于什么? :)

我怎么能这么简单?

2 个答案:

答案 0 :(得分:6)

除非您需要选择,否则应该使用ItemsControl来实现扩展,您可以在DataTemplate的{​​{1}}中定义此类行为,您只需创建一个轻量级扩展器。原则是拥有ItemsControl并将内容的可见性绑定到其ToggleButton属性。

IsChecked

答案 1 :(得分:0)

我会使用ListBox来处理此问题,并在其中包含ListBox.SelectionMode="Multiple"。 在ItemcontainerStyle上,你可以在ListBox.IsSelected上有一个Trigger来扩展它。