如何根据容器状态更改容器项的状态(WPF / XAML)

时间:2010-07-12 21:56:32

标签: wpf xaml templates binding

我有一个包含通过数据绑定创建的项目的列表框。项目模板为每个生成的项目创建自定义视图。每个生成的项目视图都是自己的用户控件。

我想将列表框的状态更改为“详细信息”与“紧凑”之类的内容,并让每个项目都自动更改自己的状态。视图项根据其状态知道要显示或隐藏的内容。我似乎无法从更高级别(用于更改视图模式的按钮)更改生成的用户控件的状态。

我希望这很清楚。如果它有帮助,我会添加细节。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

在生成的控件中设置数据触发器,该控件绑定到父级的相对属性。有关使用RelativeSource的更多信息here - 您正在寻找祖先选项,它将是您提到的父列表框。

让我们假设你在列表框中公开一个ViewType属性,然后是

{Binding Path=ViewType, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}

应该有用。

答案 1 :(得分:0)

您可以设置

MyValue = "{Binding Path=SelectedItem.CustomProperty, Converter=CustomPropertyConverter}"

这将沿着您选择的项目沿着对象链向下走。

FindAncestor爬上了链条。