我是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项目可见性绑定到......是的,对于什么? :)
我怎么能这么简单?
答案 0 :(得分:6)
除非您需要选择,否则应该使用ItemsControl
来实现扩展,您可以在DataTemplate
的{{1}}中定义此类行为,您只需创建一个轻量级扩展器。原则是拥有ItemsControl
并将内容的可见性绑定到其ToggleButton
属性。
IsChecked
答案 1 :(得分:0)
我会使用ListBox来处理此问题,并在其中包含ListBox.SelectionMode="Multiple"
。
在ItemcontainerStyle上,你可以在ListBox.IsSelected上有一个Trigger来扩展它。