UWP 项目不支持触发器元素 (XAML)
Trigger element (XAML) is not supported in a UWP project
我正在为 Windows 10 开发通用 Windows 应用程序,我发现的第一件事是在设置图像样式时不支持触发器元素 (XAML) .这是我要实现的代码:
抱歉,我不得不在这里使用图像,我是从我的 VM 中获取的。
现在如何在通用 Windows 应用程序中实现这种类型的触发器?
不,您在 UWP 中没有 Trigger
支持。
解决方法是使用 DataTriggerBehavior
和 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>
请注意,您需要包含 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>
我正在为 Windows 10 开发通用 Windows 应用程序,我发现的第一件事是在设置图像样式时不支持触发器元素 (XAML) .这是我要实现的代码:
抱歉,我不得不在这里使用图像,我是从我的 VM 中获取的。
现在如何在通用 Windows 应用程序中实现这种类型的触发器?
不,您在 UWP 中没有 Trigger
支持。
解决方法是使用 DataTriggerBehavior
和 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>
请注意,您需要包含 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>