两个重要的接口:INotifyPropertychanged和IValueConverter
来源:互联网 发布:js ajax获取json数据 编辑:程序博客网 时间:2024/04/29 15:44
今天学习了一个重要的接口INotifyPropertychanged,用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。
若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:
1.INotifyPropertyChanged interface (preferred)." xml:space="preserve">实现 INotifyPropertyChanged 接口(首选)。
2.为绑定类型的每个属性提供更改事件。
例如,在我正在做的一个连连看应用中,在LLKBlock类引用这样一个接口:
上例中,为了定义一个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和IValueConverter
- 【黑马程序员】数据绑定的INotifyPropertyChanged接口:监听和同步
- INotifyPropertyChanged接口的简单使用
- WPF 格式化输出- IValueConverter接口的使用
- INotifyPropertyChanged 接口
- INotifyPropertyChanged接口
- INotifyPropertyChanged接口
- C#WPF 格式化输出- IValueConverter接口的使用 Convert和ConvertBack
- List<T>、ObservableCollection<T>和接口INotifyPropertyChanged
- IValueConverter 接口实现
- wpf之IValueConverter接口
- ObservableCollection和List与INotifyPropertyChanged的使用
- Study C#《INotifyPropertyChanged接口》
- 关于InotifyPropertyChanged接口
- WPF INotifyPropertyChanged接口
- IvalueConverter和TypeConverter
- 两个重要的宏 offsetof 和 container_of
- 简单的INotifyPropertyChanged接口使用的示例类
- (转载)C#格式化字符串
- php常用Socket和SNMP函数集
- 嵌入之梦-关于直流电机 H 桥驱动方案的选择
- python学习(第三章)
- python学习(第四章)
- 两个重要的接口:INotifyPropertychanged和IValueConverter
- python学习(第五章)
- 就是我 歌词
- fibonacci查找
- Android ListView数据显示
- 简单几步搭建个人博客(WordPress)
- 文件拖放显示信息
- [ java ] JDBC深入!
- 初学SqlServer,总结一些注意事项