zoukankan      html  css  js  c++  java
  • 十二、数据绑定——转换器

    通过上一篇文章,我们可以发现一个问题,我们仅仅给图片赋值了一个路径,然而我们可以最终显示一张图片,这期间我们并没有进行任何的转换。当然,这并不是神出来的,而是.Net框架已经在我们感觉不到的情况下帮我们转换了,但是有些类型还是无法转换的,比如说,bool类型。以下就解决这一问题。也就是要将model(后台)转换成Ui(前台)。

    第一步:定义一个转换器

    说明:(1)示例中IsTip是布尔类型,是Ui;隐藏/显示 是枚举类型,是model

             (2)该类一般定义在工程的Common文件夹下,命名规则是:Ui中的类型+model中的类型+Converter.cs

    public class BoolVisibilityConverter : IValueConverter   //实现转换器接口

        {

            //Convert是将model中的类型转换成Ui中的类型

            public object Convert(object value, Type targetType, object parameter, string language)

            {

                //throw new NotImplementedException();   

              bool b = (bool)value;

                return b ? Visibility.Visible : Visibility.Collapsed;

            }

            //ConvertBack是用于双向绑定,如果不是双向绑定,此方法可以直接抛出异常即可,不用写方法体

            public object ConvertBack(object value, Type targetType, object parameter, string language)

            {

               // throw new NotImplementedException();

                Visibility v = (Visibility)value;  

               return v == Visibility.Visible;  

           }

        }

    第二步:在响应的XAML中

    (1)在根标签中加上 xmlns:别名="suing:工程名.文件夹名",将转换器类引入文件中。例如:xmlns:common="using:Register.Common"

    (2)在根标签之下加上 <Page.Resources>
                                              <别名:转换器名  x:Key="boolVisConverter"></别名:转换器名 >
                                     </Page.Resources>

                      例如      <Page.Resources>
                                               <common:BoolVisibilityConverter x:Key="boolVisConverter"></common:BoolVisibilityConverter>
                                  </Page.Resources>

    (3)在控件中绑定  Visibility="{Binding IsTip,Converter={StaticResource boolVisConverter}}"

  • 相关阅读:
    介绍Collection框架的结构;Collection 和 Collections的区别
    Mybites和hibernate的优缺点和区别2
    Mybites和hibernate的优缺点和区别
    AJAX如何获取从前台传递过来的数据然后在通过servle传递给后台
    list map set 集合的区别
    乐观锁和悲观锁的区别
    python生产消费Kafka
    python类型转换
    python实现远程方法调用
    Scala常用数据结构
  • 原文地址:https://www.cnblogs.com/suinuaner/p/twelve1.html
Copyright © 2011-2022 走看看