2011-11-22 32 views
0

我在xaml中有这个构造。带有datatrigger访问每个元素值的样式资源

<Type1 visibility={binding bool1, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool2, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool3, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool4, converter=BoolToVisibilityConverter}/> 

但是,用户希望看到布尔值为false的项目,但处于禁用状态。因此,我希望bool1,bool2等以一种风格提供数据触发器。

但是,“bool1”,“bool2”文本现在每个Type1元素都是显式的(它们绑定到视图模型,Type1也具有其他视图模型的绑定,所以我不想让它成为一个listview或任何改变每个元素的datacontext。

我如何做一个样式资源其datatrigger(或触发器)可以访问每件定义界值吗?我在本地绑定每个元素对一些占位元素属性然后在风格中使用元素触发器?

回答

2

如果bools应该实现y与可见度无关,为什么不直接绑定到IsEnabled?如果你想绑定到对象的值,你可以使用RelativeSource绑定Mode=Self

+0

有问题的元素是扩展元素。即使他们对他们有一种不活跃的“感觉”,但我不知道扩展功能本身应该被禁用。 是的,Mode = Self的RelativeSource是我在提出一个“占位符”值的时候想到的,这个值将被样式中的元素触发器访问。但是有没有适合这个的依赖属性? “IsEnabled”会以某种可能或可能不需要的方式影响控件的功能。 – Tormod

+1

@Tormod:如果您尚未将该标记用于其他任何内容,您可以使用标记作为占位符,或者可以创建[附加属性](http://msdn.microsoft.com/zh-cn/library/ms749011的.aspx) –