六、数据转换
在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 学习笔记之【二】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)