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

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

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

enter image description here

抱歉,我必须在这里使用图像,我是从我的虚拟机获取它的。

现在如何在通用 Windows 应用程序中实现这种类型的触发器?

最佳答案

不,UWP 中没有触发器支持。

解决方法是使用 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>

请注意,您需要包含来自 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/

相关文章:

sqlite - 在VSTS托管代理上构建具有SQLite扩展名的UWP项目时出现“路径中的非法字符”错误

wpf - 如何将 ViewModel 的 ObservableCollection 绑定(bind)到 MenuItem?

看起来像 3DSMAX 的 WPF 3D 编辑器

c# - 将录制的声音保存到 UWP 中的项目文件

c# - 访问位于 C# 中的 contentpresenter 中的控件

windows-phone-8.1 - 在 Windows Phone 8.1 通用应用程序中访问联系人信息

Silverlight 无法在同一字典中找到资源

c# - 虚拟机的 UWP MVVM 数据绑定(bind)(来自字符串的 textbox.text)

uwp - 如何使用任意参数从 UWP 启动完全信任(桌面桥)应用程序

c# - UWP App 中的 GridViewItem IsSelected 绑定(bind)