我有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>
答案 0 :(得分:4)
哦, 按预期工作,但这可能不是你期望的那样。关键是dependency property precedence。 “本地值”(在元素标记中设置)会覆盖样式尝试执行的所有操作。您需要将这些属性提取到样式设置器,该样式设置器的优先级低于样式触发器。
答案 1 :(得分:2)
你必须使用这个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>
答案 2 :(得分:0)
您是否期望在条件之间应用OR或AND。你只会得到AND。如果你想和OR只是添加另一个公共属性,那么两者的OR。
表示在绑定数据满足一组条件时应用属性值或执行操作的触发器。 http://msdn.microsoft.com/en-us/library/system.windows.multidatatrigger.aspx