我正在为 Windows 10 开发通用 Windows 应用程序,我发现的第一件事是设置图像样式时不支持触发元素 (XAML)。这是我要实现的代码:
抱歉,我不得不在这里使用图像,我是从我的 VM 中获取的。
这种类型的触发器现在如何在通用 Windows 应用程序中实现?
我正在为 Windows 10 开发通用 Windows 应用程序,我发现的第一件事是设置图像样式时不支持触发元素 (XAML)。这是我要实现的代码:
抱歉,我不得不在这里使用图像,我是从我的 VM 中获取的。
这种类型的触发器现在如何在通用 Windows 应用程序中实现?
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>
请注意,您将需要包含BehaviorsXamlSDKManaged
from C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\
。添加引用时会收到警告,但忽略它。
更新: 您现在应该从nuget获得更新的Behavior SDK。
选项 2
你总是可以在VisualStateManager
. 打开Blend并右键单击Button
并选择Edit Template,Edit a Copy然后指定所需的资源名称并点击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>