Silverlight 学习笔记之【二】

Silverlight 学习笔记之【二】,第1张

概述六、数据转换   在Silverlight 中对任何绑定都可以实现数据转换,要实现数据转换,需要创建数据转换类并实现IValueConverter 接口的Convert 和 ConvertBack 方法,当数据源传递给目标时调用 Convert 方法,反之则调用 ConvertBack 方法。    使用 IValueConverter 要引用 System.Windows.Data 命名空间。

六、数据转换

 

在Silverlight 中对任何绑定都可以实现数据转换,要实现数据转换,需要创建数据转换类并实现IValueConverter 接口的Convert ConvertBack 方法,当数据源传递给目标时调用 Convert 方法,反之则调用 ConvertBack 方法。    使用 IValueConverter 要引用 System.windows.Data 命名空间。

如:

XAML文件:

<UserControl xmlns:my="clr-namespace:System.windows.Controls;assembly=System.windows.Controls"  x:Class="SilverlightApplication3.MyConverter"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/@R_502_3725@/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
             xmlns:my1="clr-namespace:SilverlightApplication3" ---------转换类所在的命名空间
    d:DesignHeight="300" d:DesignWIDth="400">

    <GrID x:name="LayoutRoot" Background="White">
        <StackPanel>
            <StackPanel.Resources>
                <my1:Converter x:Key="MyConverter "></my1:Converter>
            </StackPanel.Resources>
            <my:DatePicker name="dp" margin="5" FontSize="15" WIDth="200" Height="30" />
            <TextBlock name="tbkDate" WIDth="180" margin="5" FontSize="15" Height="30"
                       Text="{Binding Date,Mode=TwoWay,Converter={StaticResource MyConverter }}"></TextBlock>
        </StackPanel>
    </GrID>
</UserControl>

 

cs文件:

namespace SilverlightApplication3
{
    public class Converter :IValueConverter
    {

        #region IValueConverter Members

        public object Convert(object value,Type targettype,object parameter,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
    }
}

 

 

 

namespace SilverlightApplication3
{
    public partial class MyConverter : UserControl
    {
        Book book = new Book();

        public MyConverter()
        {
            InitializeComponent();
            dp.SelectedDateChanged += new EventHandler<SelectionChangedEventArgs>(dp_SelectedDateChanged);
            book.Date = DateTime.Now.TolongDateString();
            tbkDate.DataContext = book;
        }

        voID dp_SelectedDateChanged(object sender,SelectionChangedEventArgs e)
        {
            book.Date = this.dp.SelectedDate.ToString(); 
        }
    }
}

 

 

七、路由事件

 

Silverlight 中并非所有的输入事件都支持路由事件,它只针对于框架级别的输入事件:MouseleftbuttonDown,MouseleftbuttonUp,MouseMove,KeyDown,KeyUp,Gotfocus,LostFocus,BindingValIDationError。

 

如果不希望引发 事件的目标对象产生路由事件,可以使用为事件数据类设置Handled属性,所有支持路由事件数据类都 支持Handled属性,如果设置Handled属性为true,Silverlight 将认为这个路由事件被标记为已处理,也就是说这个对象引发的路由事件将被忽略。

 

当路由事件产生向上冒泡机制时,你在引发事件对象的父对象事件处理程序中获取的sender 对象并不是引发该事件的对象,得到的sender 仍然是父对象本身,在这种情况下,Silverlight 提供了OriginalSource 属性,使用该 属性可以 在父对象的事件处理程序中直接 得到引发事件的原始对象

总结

以上是内存溢出为你收集整理的Silverlight 学习笔记之【二】全部内容,希望文章能够帮你解决Silverlight 学习笔记之【二】所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存