zoukankan      html  css  js  c++  java
  • 2018-8-10-如何在-UWP-使用-wpf-的-Trigger-

    title author date CreateTime categories
    如何在 UWP 使用 wpf 的 Trigger
    lindexi
    2018-08-10 19:16:51 +0800
    2018-2-13 17:23:3 +0800
    WPF UWP

    本文需要告诉大家,如何使用 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

  • 相关阅读:
    gnome-shell 使用 notify-send 发送桌面消息
    fedora 中从命令行中直接打开资源管理器
    wget curl 的 使用方法
    NFS 系统的搭建 on fedora; nfs 搭建 on ubuntu 1806;
    -bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory
    Linux 快速查看系统配置-熟悉新环境的配置
    2019-11-7-WPF-How-to-get-plain-text-from-RichTextBox
    2018-8-10-git-push-错误-hook-declined-
    2018-12-25-win2d-图片水印
    2018-8-10-win10-UWP-用Path画图
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086324.html
Copyright © 2011-2022 走看看