我有一个TextBlock
-默认情况下是折叠的,只有在满足两个条件时才会显示
我有下面的XAML相同。但它并没有像预期的那样工作。
任何帮助都会很感激。由于
<TextBlock Text="{Binding Path=CC.Name}" VerticalAlignment="Center" FontWeight="Bold" Margin="0,0,10,0" Visibility="Collapsed">
<TextBlock.Style>
<Style>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsP}" Value="True" />
<Condition Binding="{Binding Path=IsC}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="TextBlock.Visibility" Value="Visible"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
哦,它按预期工作,但这可能不是您所期望的。关键是依赖属性优先级。"局部值"(在元素标签中设置)覆盖样式尝试做的所有事情。您需要将这些属性提取到优先级低于样式触发器的样式设置器中。
你必须使用这个setter:
<TextBlock Text="{Binding Path=CC.Name}" VerticalAlignment="Center" FontWeight="Bold" Margin="0,0,10,0">
<TextBlock.Style>
<Style>
<Setter Property="TextBlock.Visibility" Value="Collapsed"/>
<Style.Triggers>
<MultiDataTrigger>
...
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
您是否期望在条件之间应用OR或AND ?你只会得到AND。如果你想要and OR,只需要添加另一个公共属性这是两者的OR。
表示当绑定的数据满足一组条件时应用属性值或执行操作的触发器。http://msdn.microsoft.com/en-us/library/system.windows.multidatatrigger.aspx