我正在为 Windows 10 开发通用 Windows 应用程序,我发现的第一件事是在设置图像样式时不支持触发器元素 (XAML)。这是我试图实现的代码:
抱歉,我必须在这里使用图像,我是从我的虚拟机获取它的。
现在如何在通用 Windows 应用程序中实现这种类型的触发器?
最佳答案
不,UWP 中没有触发器
支持。
解决方法是使用 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\12.0\< 的
。添加引用时您会收到警告,但忽略它即可。BehaviorsXamlSDKManaged
/
更新: 您应该从 nuget 获取更新的行为 SDK现在。
<小时/>选项 2
您始终可以在 VisualStateManager
中执行相同的操作。打开Blend并右键单击按钮
并选择编辑模板、编辑副本,然后指定资源名称你想要并点击确定。
然后查找 Disabled VisualState
并将其替换为
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
</VisualState.Setters>
</VisualState>
关于xaml - UWP 项目不支持触发器元素 (XAML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929071/