如何在 UWP 使用 wpf 的 Trigger

原文:如何在 UWP 使用 wpf 的 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


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

时间: 2024-11-28 17:37:25

如何在 UWP 使用 wpf 的 Trigger的相关文章

如何在C#的wpf中实现几个视频窗口的切换啊

问题描述 我现在要做一个用户控件,中间有4宫格的4个视频,点击其中一个视频,将这个视频放大其他三个缩小,放到上面,再点击上面的三个其中一个,下面的视频变长点击的那个视频,切换的过程中应该要有动态的效果,不是直接隐藏和显示,那样会很麻烦和消化内存非常大得,我试过,效果很不好,我现在要做成那种动态的效果,我该怎么做啊,要是有个例子给我参考一下就更好,谢谢大侠们............. 解决方案 解决方案二:DotNetBarforWPF解决方案三:不明白1楼的是什么意思啊.....解决方案四:大侠

从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能

原文:从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能 前言 之前在 剁手党也有春天 -- 淘宝 UWP "比较"功能诞生记 这篇随笔中介绍了一下 UWP 淘宝的"比较"新功能呱呱坠地的过程.在鲜活的文字背后,其实都是程序员不眠不休的血泪史(有血有泪有史)--所以我们这次就要在看似好玩的 UWP 多窗口实现背后,挖掘一些我们也是首次接触的干活"新鲜热辣"地放松给大家.希望能使大家在想要将自己的 APP 开新窗口的时候,能从本

Win10 UWP 开发系列:使用SQLite

原文:Win10 UWP 开发系列:使用SQLite 在App开发过程中,肯定需要有一些数据要存储在本地,简单的配置可以序列化后存成文件,比如LocalSettings的方式,或保存在独立存储中.但如果数据多的话,还是需要本地数据库的支持.在UWP开发中,可以使用SQLite.本篇文章说一下如何在UWP中使用SQLite.因为SQLite是跨平台的,版本众多,我刚开始用的时候不知道要装哪个,什么WP8的.WP8.1的.Win RT的--简直摸不着头脑.希望这篇文章能让大家少走点弯路. 其实这篇文

UWP开发随笔——使用SQLite数据库

原文:UWP开发随笔--使用SQLite数据库 摘要 大多数的app都需要数据存储,在数据存储这方面,强大的windows把app数据分为两种:settings和files,并提供了十分简洁的api,让开发者能够轻松使用.但是在有些场景下,app的数据存储需要有database的支持,而sqlite,由于它轻量.高效.跨平台的特性,已经成为移动客户端开发中不可或缺的一部分.今天,小编就简单介绍一下如何在uwp开发中使用sqlite数据库. 环境配置 1.下载和安装SQLite 要使用sqlite

Win10通用应用程序 UWP 使用 SQLite 【图文教程】

在win10 UWP开发中,我们可以使用SQLite.本篇文章说一下如何在UWP中使用SQLite.因为SQLite是跨平台的,版本众多,我刚开始用的时候不知道要装哪个,什么WP8的.WP8.1的.Win RT的--简直摸不着头脑.希望这篇文章能让大家少走点弯路. 一.添加SQLite扩展 首先要添加SQLite的库.主页是http://sqlite.org/,下载地址在:http://sqlite.org/download.html.这个页面有所有平台的下载地址,下载这个: 然后安装. 还有一

uwp-UWP C# 一个小应用求教

问题描述 UWP C# 一个小应用求教 新手求教:一个uwp小游戏,如何在uwp中画网格,并且在网格的随机坐标生成几个圆形,用户可通过画线, 将任意两个圆形相连,最后应用将检查每个圆连了多少根线 解决方案 http://www.cnblogs.com/TianFang/p/4732570.html 解决方案二: C#--第2周实验--创建一个控制台应用--输入并输出一行字符串

wpf 如何在webbrowser上面添加一个textbox控件

问题描述 wpf 如何在webbrowser上面添加一个textbox控件 wpf 如何在webbrowser上面添加一个textbox控件,datagrid如何获取重新排列后的顺序,就是datagrid的列头左右移动调换次序后的那个新的顺序

wpf-请教如何在WPF后台修改Grid.ColumnSpan属性?

问题描述 请教如何在WPF后台修改Grid.ColumnSpan属性? 20C 我在grid里平均上下左右分了四个区域,现在想实现点击界面某个button,指定的一个区域充满整个grid,即其他三个区域属性为不可见.比如第一个区域初始位置是Grid.Row=""0"" Grid.Column=""0"", 点击按钮后如果修改为 Grid.Row=""0"" Grid.Column=&qu

wpf为何在c#代码里创建了Button对象在调试时就出错要我去创建Button?

问题描述 wpf为何在c#代码里创建了Button对象在调试时就出错要我去创建Button? Button[] btn = new Button[35]; for (int i = 0; i < 35; i++) { for (int j = 1; j < 6; j++) for (int h = 0; h < 7; h++) { btn[i].Padding = new Thickness(28, 10,28,10); btn[i].FontSize = 26; btn[i].Fore