我正在为Windows 10开发通用Windows应用程序,我发现的第一件事是在设置图像样式时不支持触发器元素(XAML)。这是我试图实现的代码:
抱歉,我必须在这里使用图片,我是从我的VM获取的。
现在如何在通用Windows应用程序中实现此类触发器?
答案 0 :(得分:20)
不,您在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>
请注意,您需要在 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>