0

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

3 回答 3

4

哦,它按预期工作,但这可能不是你所期望的。关键是依赖属性优先级。“本地值”(在元素标签中设置)覆盖样式尝试执行的所有操作。您需要将此类属性提取到优先级低于样式触发器的样式设置器。

于 2011-12-12T20:41:11.290 回答
2

你必须使用这个设置器:

<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>
于 2011-12-12T20:41:58.950 回答
0

您是否期望在条件之间应用 OR 或 AND。你只会得到 AND。如果您想要 OR 只需添加另一个公共属性,则为两者的 OR。

表示当绑定数据满足一组条件时应用属性值或执行操作的触发器。 http://msdn.microsoft.com/en-us/library/system.windows.multidatatrigger.aspx

于 2011-12-12T20:45:19.070 回答