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

  • 相关阅读:
    401. Binary Watch
    46. Permutations
    61. Rotate List
    142. Linked List Cycle II
    86. Partition List
    234. Palindrome Linked List
    19. Remove Nth Node From End of List
    141. Linked List Cycle
    524. Longest Word in Dictionary through Deleting
    android ListView详解
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086325.html
Copyright © 2011-2022 走看看