Silverlight开发历程—(数据格式转换)

Silverlight开发历程—(数据格式转换),第1张

概述      通常在一些情况下,我们需要把绑定到UI的数据做一些格式的特定转换,例如转换时间格式。而在这个情况下就需要使用Silverlight的数据转换功能(当然用其它方法也可以我们在这里只是体现Silverlight数据转换功能),在Silverlight中任何绑定数据都可以实现数据转换。要实现数据转换首先要创建数据转换类,然后要继承IValueConverter接口并实现接口的Convert和

      通常在一些情况下,我们需要把绑定到UI的数据做一些格式的特定转换,例如转换时间格式。而在这个情况下就需要使用Silverlight的数据转换功能(当然用其它方法也可以我们在这里只是体现Silverlight数据转换功能),在Silverlight中任何绑定数据都可以实现数据转换。要实现数据转换首先要创建数据转换类,然后要继承IValueConverter接口并实现接口的Convert和ConvertBack方法,当数据源传递数据到目标时调用Convert方法反之则调用ConvertBack方法。ConvertBack方法不可省略,下面我们来看IValueConverter接口的两个方法的定义

Convert:

/// <summary>        /// 摘要:        //    在将数据源传递到UI时进行数据修改。        /// </summary>        /// <param name="value">正传到目标的数据源</param>        /// <param name="targettype">目标依赖项属性需要的数据的System.Type</param>        /// <param name="parameter">要在转换器逻辑中使用的可选参数</param>        /// <param name="culture">转换的区域性</param>        /// <returns> 传递到目标依赖的项属性的值</returns>        object Convert(object value,Type targettype,object parameter,CultureInfo culture);


然后是ConvertBack:

 /// <summary>        /// 摘要:        ///     将目标数据传到源对象之前对值进行修改此方法        ///     仅在System.windows.Data.BindingMode.TwoWay绑定中调用        /// </summary>        /// <param name="value">正传到源的目标数据</param>        /// <param name="targettype">源对象需要的数据的System.Type</param>        /// <param name="parameter">要在转换器逻辑中使用的可选参数</param>        /// <param name="culture">转换的区域性</param>        /// <returns> 要传到源对象的值</returns>        object ConvertBack(object value,CultureInfo culture);


下面是 例子,首先创建一个Convert类,然后让这个类继承自IValueConverter接口,要用IValueConverter接口要引用System.windows.Data命名空间。

代码如下:

public class Converter : IValueConverter    {        #region IValueConerter成员        public object Convert(object value,System.Globalization.CultureInfo culture)        {            return DateTime.Parse(value.ToString()).ToString("yyyy年MM月dd日");        }        public object ConvertBack(object value,System.Globalization.CultureInfo culture)        {            throw new NotImplementedException();        }        #endregion    }


这个Convert只是实现了时间的转换将时间转换成yyyy年MM月dd日的形式,例子很简单只是为了体现Silverlight的数据转换功能。

然后要在XAML里面加入myConvert作用前要在UserControl中添加命名空间xmlns:my="clr-namespace:Propject1.s02",添加的命名空间中Propject1是我的项目的名字s02是我的Converter类所在的文件夹的namespace,所以朋友们需要把Propject1.s02换成自己的项目解决方案名字,一定要引用到Convert所在目录那一级哦。

前台界面如下:

XAML

<StackPanel x:name="LayoutRoot" Background="White">        <StackPanel.Resources>            <!--引用对象-->            <my:Converter x:Key="myConvert"/>        </StackPanel.Resources>        <sdk:DatePicker x:name="datep" margin="5" FontSize="15" WIDth="200" Height="30"  />        <TextBlock x:name="txb_Date"  WIDth="200" FontSize="15" Height="30" Text="{Binding Date,Mode=TwoWay,Converter={StaticResource myConvert}}" />    </StackPanel>


创建Book_Convert 代码:

 public class Book_Convert : INotifyPropertyChanged    {        private string _date;        /// <summary>        /// 日期        /// </summary>        public string Date        {            get { return _date; }            set            {                _date = value;                NotifyProperyChanged("Date");            }        }        public event PropertyChangedEventHandler PropertyChanged;        private voID NotifyProperyChanged(string Propertyname)        {            if (PropertyChanged != null)            {                PropertyChanged(this,new PropertyChangedEventArgs(Propertyname));            }        }    }


UI后台:

 Book_Convert convert = new Book_Convert();        public DataConvert()        {            InitializeComponent();            datep.SelectedDateChanged += new EventHandler<SelectionChangedEventArgs>(datep_SelectedDateChanged);            convert.Date = DateTime.Now.ToString();            txb_Date.DataContext = convert;        }        voID datep_SelectedDateChanged(object sender,SelectionChangedEventArgs e)        {            convert.Date = datep.SelectedDate.ToString();        }


运行如图所示:

未使用Convert前:

然后使用Convert后:

例子是很简单,大家可以变通一下IValueConverter接口中不是有System.Type参数吗。大家可以根据这个类型来判断是要进行什么转换,然后再调用转换方法就行了。

@H_403_114@ 总结

以上是内存溢出为你收集整理的Silverlight开发历程—(数据格式转换)全部内容,希望文章能够帮你解决Silverlight开发历程—(数据格式转换)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存