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

时间:2015-08-10 21:00:03

标签: xaml uwp win-universal-app uwp-xaml

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

enter image description here

抱歉,我必须在这里使用图片,我是从我的VM获取的。

现在如何在通用Windows应用程序中实现此类触发器?

2 个答案:

答案 0 :(得分:20)

不,您在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>

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

<强>更新 您现在应该从nuget获取更新的行为SDK

选项2

你总是可以在VisualStateManager中做同样的事情。打开 Blend 并右键单击Button并选择编辑模板编辑副本,然后指定所需的资源名称和点击确定

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

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

答案 1 :(得分:1)

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

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>