23

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

在此处输入图像描述

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

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

4

2 回答 2

28

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

一种解决方法是DataTriggerBehavior与 a一起使用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>

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

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


选项 2

你总是可以在VisualStateManager. 打开Blend并右键单击Button并选择Edit TemplateEdit a Copy然后指定所需的资源名称并点击OK

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

<VisualState x:Name="Disabled">
    <VisualState.Setters>
        <Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
    </VisualState.Setters>
</VisualState>
于 2015-08-11T04:59:39.093 回答
4

或者,您可以使用命名空间

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>
于 2017-03-15T14:09:20.723 回答