两个重要的接口:INotifyPropertychanged和IValueConverter
2013-02-11 22:42
316 查看
今天学习了一个重要的接口INotifyPropertychanged,用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。
若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:
1.INotifyPropertyChanged interface (preferred)." xml:space="preserve">实现 INotifyPropertyChanged 接口(首选)。
2.为绑定类型的每个属性提供更改事件。
例如,在我正在做的一个连连看应用中,在LLKBlock类引用这样一个接口:
LLKBlock类中当属性值发生改变时,会像绑定的对象发送一个通知,使绑定值及时更改,这是一个很常用的接口……
另一个重要的接口IValueConverter:
定义:IValueConverter interface and then implement the Convert and ConvertBack methods." xml:space="preserve" style="font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif; line-height: 21px; background-color: rgb(255, 255,
255);">如果要将值转换器与绑定关联,请创建一个实现 IValueConverter 接口的类,然后实现 Convert 和ConvertBack 方法。转换器可以将数据从一种类型更改为另一种类型,根据区域性信息转换数据,或修改表示形式的其他方面。
注意值转换器类的命名方法:通常是将要转换的值在Model中的类型名称作为开头单词,再接上UI中的类型名称,再加上ValueConverter;例如,要定义一个bool类型到visibility类型的类型转换,可以定义类名为:BoolVisibilityValueConverter
接口用法举例:
上例中,为了定义一个bool到visibility的类型转换,我们构建了如上的类来实现。
若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:
1.INotifyPropertyChanged interface (preferred)." xml:space="preserve">实现 INotifyPropertyChanged 接口(首选)。
2.为绑定类型的每个属性提供更改事件。
例如,在我正在做的一个连连看应用中,在LLKBlock类引用这样一个接口:
public class LLKBlock:INotifyPropertyChanged { private void FirePropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged (this, new PropertyChangedEventArgs(propertyName)); } } public event PropertyChangedEventHandler PropertyChanged; private int x; private int y; public int Y { get { return y; } set { y = value; FirePropertyChanged("Y"); } } public int X { get { return x; } set { x = value; FirePropertyChanged("X"); } } private bool isAlive; public bool IsAlive { get { return isAlive; } set { isAlive = value; FirePropertyChanged("IsAlive"); } } private int picValue; public int PicValue { get { return picValue; } set { picValue = value; FirePropertyChanged("PicValue"); } } }
LLKBlock类中当属性值发生改变时,会像绑定的对象发送一个通知,使绑定值及时更改,这是一个很常用的接口……
另一个重要的接口IValueConverter:
定义:IValueConverter interface and then implement the Convert and ConvertBack methods." xml:space="preserve" style="font-family: 'Segoe UI', Helvetica, Garuda, Arial, sans-serif; line-height: 21px; background-color: rgb(255, 255,
255);">如果要将值转换器与绑定关联,请创建一个实现 IValueConverter 接口的类,然后实现 Convert 和ConvertBack 方法。转换器可以将数据从一种类型更改为另一种类型,根据区域性信息转换数据,或修改表示形式的其他方面。
注意值转换器类的命名方法:通常是将要转换的值在Model中的类型名称作为开头单词,再接上UI中的类型名称,再加上ValueConverter;例如,要定义一个bool类型到visibility类型的类型转换,可以定义类名为:BoolVisibilityValueConverter
接口用法举例:
public class BoolVisibilityValueConverter:IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { bool boolType = (bool)value; if (boolType == true) { return Visibility.Visible; } else return Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } }
上例中,为了定义一个bool到visibility的类型转换,我们构建了如上的类来实现。
相关文章推荐
- INotifyPropertyChanged 接口
- WPF MVVM之INotifyPropertyChanged接口的几种实现方式
- WPF 格式化输出- IValueConverter接口的使用
- [Silverlight入门系列]使用MVVM模式(3):Model的INotifyPropertyChanged接口实现
- INotifyPropertyChanged接口
- 例说INotifyPropertyChanged接口
- INotifyPropertyChanged 接口
- INotifyPropertyChanged接口的简单使用
- 不实现 INotifyPropertyChanged接口也能实现数据绑定
- 黑马程序员_数据绑定,INotifyPropertyChanged接口,DataContext
- prism4学习笔记5:INotifyPropertyChanged接口
- Silverlight中OneTime,OneWay,TwoWay及INotifyPropertyChanged 接口的理解 .
- [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
- INotifyPropertyChanged 接口
- WPF进阶之接口(1):IValueConverter,IMultiValueConverter
- WPF进阶之接口(1):IValueConverter,IMultiValueConverter
- INotifyPropertyChanged 接口使用--update
- C#WPF 格式化输出- IValueConverter接口的使用 Convert和ConvertBack
- 例说INotifyPropertyChanged接口
- WindowPhone(SliverLight)中属性变化通知机制INotifyPropertyChanged 接口