如何在 UWP 使用 wpf 的 Trigger 安装 Behaviors以前的代码UWP 使用 Trigger

本文需要告诉大家,如何使用 Behaviors 做出 WPF 的 Trigger ,需要知道 UWP 不支持 WPF 的 Trigger 。

安装 Behaviors

请使用 Nuget 安装,可以输入下面的代码进行安装

Install-Package Microsoft.Xaml.Behaviors.Uwp.Managed 

或者搜索 Microsoft.Xaml.Behaviors 下载

他的官网在 Behaviors

以前的代码

在 WPF 开发,可以写出下面代码

<Button>
  <Image>
    <Image.Style>
      <Style TargetType="Image">
       <Style.Triggers Property="IsEnabled" Value="False">
         <Setter Property="Opacity" Value="0.5"></Setter>
        </Style.Triggers>
      </Style>
    <Image.Style/>
  </Image>
</Button>

在 Button IsEnabled 设置图片的透明,但是 UWP 不支持,所以需要使用别的方法。

UWP 使用 Trigger

上面的代码可以很简单用 DataTriggerBehavior 来做。需要知道的是 DataTriggerBehavior 是 Behaviors 的一个东西,所以需要安装之后才可以使用。请看下面的代码。

     <Button x:Name="MyButton" Margin="10,10,10,10" Width="140" Height="80">
            <Image x:Name="MyImage" Source="Assets/动漫.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>

这里的代码不能直接复制使用,需要先添加命名空间和寻找一张图片,因为图片使用的是Assets/动漫.jpg ,所以需要把他修改为你的图片的所在,如何写参见win10 uwp 访问解决方案文件

命名空间

 xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
 xmlns:core="using:Microsoft.Xaml.Interactions.Core" 

不需要在后台写什么,直接运行可以看到在 按钮可以使用时的图片

按钮无法使用时的图片

请使用 DataTriggerBehavior 的Binding 连到需要修改的属性,在 Value 判断他的值。

然后可以在得到的值判断,修改透明

可以看到使用方法和动画一样

如果使用 MVVM 的话,可以把透明绑到一个属性,通过返回来设置,如果按钮有 IsMyButtonEnabled 那么可以使用下面的代码绑定透明,因为很简单我就不说啦。

return IsMyButtonEnabled ? 1.0 : 0.5;

参见:Trigger element (XAML) is not supported in a UWP project


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/%E5%A6%82%E4%BD%95%E5%9C%A8-UWP-%E4%BD%BF%E7%94%A8-wpf-%E7%9A%84-Trigger.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏walterlv - 吕毅的博客

将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj

发布于 2018-01-15 16:04 更新于 2018-09...

32020
来自专栏Timhbw博客

Markdown编辑器推荐–MarkdownPad

2016-03-1008:56:41 发表评论 406℃热度 如果安装碰到渲染错误问题,请点击。 Markdown Markdown是一种可以使用普通文本编...

428120
来自专栏张善友的专栏

Lightweight Test Automation Framework之旅

Lightweight Test Automation Framework是ASP.NET QA团队开发的自动化集成测试框架,并且应用在ASP.NET QA团队...

23390
来自专栏张善友的专栏

Microsoft Sync Framework 1.0 RTM发布了

Microsoft Sync Framework 是一个功能完善的同步平台,实现了应用程序、服务和设备的协作和脱机访问。它提供了一些可支持在脱机状态下漫游、共享...

21260
来自专栏Hongten

Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库。

10410
来自专栏程序员与猫

ASP.NET Core 介绍和项目解读

标签: ASP.NETCore 1. 前言 作为一个.NET Web开发者,我最伤心的时候就是项目开发部署时面对Windows Server上贫瘠的解决方案...

27660
来自专栏.NET开发者社区

(码友推荐)2018-07-07 .NET及相关开发资讯速递

1.Different Ways to Compare SQL Server Tables Schema and Data

9420
来自专栏Golang语言社区

IntelliJ idea配置Go开发环境

IntelliJ idea一个月,甚得我心,终弃Sublime、liteIDE。 IntelliJ idea是非常强大的一款IDE,支持丰富的插件。安装配置都是...

85360
来自专栏NetCore

用Js控制TextBox不能复制粘贴

今天项目中,有一个要求,需要有一个Textbox(WebControls),不能复制、粘贴 一开始没想到TextBox有这个事件,一直在找,找了N久,只有Wi...

278100
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Auto...

249100

扫码关注云+社区

领取腾讯云代金券