WPF 自定义控件依赖属性怎么实时变化?
来源:互联网 发布:南京军区网络电视台 编辑:程序博客网 时间:2024/05/06 04:49
WPF 自定义的依赖属性要想在界面上能立即看到属性变化的值。必须实现回调通知
下面以最近刚自定义的RadioButton为例
public class RadioButton360 : RadioButton { public static readonly DependencyProperty CheckedColorProperty = DependencyProperty.Register("CheckedColor", typeof(Brush), typeof(RadioButton360), new PropertyMetadata(Brushes.White, PropertyChanged)); public static readonly DependencyProperty UnCheckedColorProperty = DependencyProperty.Register("UnCheckedColor", typeof(Brush), typeof(RadioButton360), new PropertyMetadata(Brushes.Transparent, PropertyChanged)); public static readonly DependencyProperty MouseOverColorProperty = DependencyProperty.Register("MouseOverColor", typeof(Brush), typeof(RadioButton360), new PropertyMetadata(Brushes.LightGray, PropertyChanged)); /// <summary> /// 选中颜色 /// </summary> public Brush CheckedColor { get { return (Brush)GetValue(CheckedColorProperty); } set { SetValue(CheckedColorProperty, value); } } /// <summary> /// 未选中颜色 /// </summary> public Brush UnCheckedColor { get { return (Brush)GetValue(UnCheckedColorProperty); } set { SetValue(UnCheckedColorProperty, value); } } /// <summary> /// 鼠标移动颜色 /// </summary> public Brush MouseOverColor { get { return (Brush)GetValue(MouseOverColorProperty); } set { SetValue(MouseOverColorProperty, value); } } public RadioButton360() { try { this.Resources.Source = new Uri("DialogEx;Component/Controls/RadioButton360.xaml", UriKind.RelativeOrAbsolute); } catch { throw new Exception("未找到:DialogEx;Component/Controls/RadioButton360.xaml"); } } private static void PropertyChanged(DependencyObject dobj, DependencyPropertyChangedEventArgs e) { RadioButton360 control = (RadioButton360)dobj; control.Resources["CheckedColor"] = control.CheckedColor; control.Resources["UnCheckedColor"] = control.UnCheckedColor; control.Resources["MouseOverColor"] = control.MouseOverColor; control.Style = control.Resources["RadioButtonStyle"] as Style; //String.Format("PropertyChanged - 属性:{0} 新值:{1} 旧值:{2}", e.Property.Name, e.NewValue, e.OldValue); }
PropertyChanged 这个函数就是用来在通知之后执行的。这样我们可以在自定义控件初始化的时候加载资源,当依赖属性发生变化时,会触发事件,
我们回调至这个函数就能达到效果。结果将会界面上实时显示
经过测试!上面这种方法不安全。不知道什么问题造成的。初始值经常会覆盖设置的值。不知道有没有人有办法彻底解决。
0 0
- WPF 自定义控件依赖属性怎么实时变化?
- 【WPF】自定义控件之依赖属性
- WPF 自定义控件的依赖属性的绑定方法
- WPF自制控件如何定义依赖属性
- wpf控件开发基础(5) -依赖属性实践
- wpf 控件的依赖属性和数据绑定
- WPF 依赖属性,用户控件依赖属性(DependencyProperty 依赖属性、GetValue() SetValue() CLR属性包装器、SetBinding 数据绑定)
- 【.Net码农】WPF下怎么让控件大小跟着窗口的大小变化而变化
- WPF之依赖属性
- WPF依赖属性
- wpf 依赖项属性
- WPF(依赖属性)
- WPF依赖属性
- WPF依赖属性
- WPF 依赖属性 DependencyProperty
- wpf依赖项属性
- WPF 依赖属性使用
- WPF 依赖属性
- android 组件DatePicker实例
- 编程方法论/架构设计/模式相关转载链接汇总
- String,创建对象问题
- Android 点击两次返回退出应用
- Importing a Microsoft Excel Source Definition
- WPF 自定义控件依赖属性怎么实时变化?
- 《算法的乐趣》-人民邮电出版社 王晓华,序言中的题目
- mac系统使用技巧链接汇总
- 文章标题
- ASP.NET文件上传大小II限制修改
- 苹果审核reject理由大全(10):不合适的appstore评级
- 快速排序问题
- 利用mod_wsgi部署Django应用
- 大部分网站详情页效果:网页锚点跳到特定位置+浮动层固定在屏幕顶部