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

Trigger element (XAML) is not supported in a UWP project

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

抱歉,我不得不在这里使用图像,我是从我的 VM 中获取的。

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

不,您在 UWP 中没有 Trigger 支持。

解决方法是使用 DataTriggerBehaviorChangePropertyAction 来完成完全相同的事情。

  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>

请注意,您需要包含 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged.0\ 中的 BehaviorsXamlSDKManaged。添加引用时会收到警告,但忽略它即可。

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


选项 2

您始终可以在 VisualStateManager 中做同样的事情。打开 Blend 并右键单击您的 Button 和 select 编辑模板编辑副本 然后指定你想要的资源名称并点击 OK.

然后寻找 Disabled VisualState 并将其替换为

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

或者您可以使用命名空间

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

<ToggleButton Content="Execute"
              IsChecked="{Binding ButtonIndicator}"
              FontSize="8">
   <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="Checked">
            <Core:InvokeCommandAction Command="{Binding ExecuteCommand}" />
        </Core:EventTriggerBehavior>
   </Interactivity:Interaction.Behaviors>
</ToggleButton>