如何将文本块可见性解析为默认情况下折叠...并根据条件切换?

时间:2011-12-12 20:37:19

标签: wpf visibility textblock multitrigger multidatatrigger

我有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>

3 个答案:

答案 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

相关问题