如何解决文本块可见性作为默认折叠…并根据条件切换



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

相关内容

  • 没有找到相关文章

最新更新