UWP项目不支持触发器元素(XAML)

Ray*_*Ray 18 xaml win-universal-app uwp uwp-xaml

我正在为Windows 10开发通用Windows应用程序,我发现的第一件事是在设置图像样式时不支持Trigger元素(XAML).这是我试图实现的代码:

在此输入图像描述

对不起,我不得不在这里使用图片,我从我的VM获取它.

现在在通用Windows应用程序中如何实现这种类型的触发器?

Jus*_* XL 22

不,你Trigger在UWP中没有支持.

解决方法是使用DataTriggerBehaviora ChangePropertyAction来完成完全相同的事情.

  xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
  xmlns:Core="using:Microsoft.Xaml.Interactions.Core" 

<Button x:Name="MyButton" Width="140" Height="80" IsEnabled="False">
    <Image x:Name="MyImage" Source="Assets/xxx.jpg">
        <Interactivity:Interaction.Behaviors>
            <Core:DataTriggerBehavior Binding="{Binding IsEnabled, ElementName=MyButton}" Value="False">
                <Core:ChangePropertyAction TargetObject="{Binding ElementName=MyImage}" PropertyName="Opacity" Value="0.5" />
            </Core:DataTriggerBehavior>
        </Interactivity:Interaction.Behaviors>
    </Image>
</Button>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要包含BehaviorsXamlSDKManaged来自C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\.添加引用时会收到警告但只是忽略它.

更新: 您现在应该从nuget获取更新的Behavior SDK.


选项2

你可以随时做同样的事情VisualStateManager.打开Blend并右键单击您的Button并选择Edit Template,Edit a Copy,然后指定所需的资源名称并单击OK.

然后查找已禁用 VisualState并替换为

<VisualState x:Name="Disabled">
    <VisualState.Setters>
        <Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
    </VisualState.Setters>
</VisualState>
Run Code Online (Sandbox Code Playgroud)

  • 你对UWP中缺少Triggers是正确的.我更习惯于WPF,并没有意识到他们已经这样做了.平台之间的一点点一致性本来不错! (3认同)