2010-07-12 67 views
0

我有一个通过数据绑定创建的项目的列表框。项目模板为每个生成的项目创建一个自定义视图。每个生成的项目视图都是它自己的用户控件。如何根据容器状态更改容器项目的状态(WPF/XAML)

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

我希望这已经够清楚了。如果有帮助,我会添加详细信息。

非常感谢您的帮助!

+0

感谢您的快速响应!对不起,我应该更清楚了。我特别需要在生成的用户控件上执行更改状态,而不仅仅是设置属性值。我想声明一个事件触发器,所以源是一个被点击的按钮,然后在用户控件上使用一个ChangeStateAction(我希望每件事都声明)。该按钮位于ListBox级别,因此一个简单的祖先绑定将无法找到它。实际上,它并没有使用户控件的属性匹配另一个控件的属性值 - 它触发了一个基于某个按钮的点击事件的状态更改。 – 2010-07-12 22:28:24

回答

1

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

比方说你暴露ViewType属性在列表框,然后像

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

应该工作。

0

您可以设置

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

这将走在对象链了你选择的项目。

FindAncestor爬上链条。