繁体   English   中英

使用与WPF样式中的setter属性不同类型的Trigger属性

[英]Using a trigger property on a different type to the setter property on WPF style

我希望在窗口本身的依赖项属性为false时,将主窗口上一组图像的不透明度设置为0.25,并在该依赖项属性为true时将其恢复。 我曾尝试为此使用样式触发器,但是当依赖项属性与opacity属性的类型不同时遇到困难。

    <Window.Resources>
        <Style x:Key="IconEnabledStyle" TargetType="Image">
            <Style.Triggers>
                <!-- MenuOptionsEnabled is on main window. Opacity is on Image -->
                <Trigger Property="MenuOptionsEnabled" Value="False">
                    <Setter Property="Opacity" Value="0.25"></Setter>
                </Trigger>
                <Trigger Property="MenuOptionsEnabled" Value="True">
                    <Setter Property="Opacity" Value="1.0"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

如您所见,Trigger属性与Setter属性的类型不同。 有没有一种方法可以同时定义Trigger和Setter属性的类型。

要解决该问题,可以将DataTriggerRelativeSource一起使用以查找祖先Window ,如下所示:

<Style x:Key="IconEnabledStyle" TargetType="Image">
    <Style.Triggers>    
       <DataTrigger Binding="{Binding MenuOptionsEnabled, 
                    RelativeSource={RelativeSource AncestorType=Window}}" 
                    Value="False">
          <Setter Property="Opacity" Value="0.25"></Setter>
       </DataTrigger>
    </Style.Triggers>
</Style>

注意默认的Opacity已经是1 因此,您无需任何触发器即可将其重置为1 满足条件时,将其设置为0.25 ,否则它将自动重置为之前的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM