Xamarin.Forms之OnElementPropertyChanged那些事
2015-08-13 20:09
375 查看
这是一篇不完善的笔记,并不是教程。
今天遇到一些奇怪的问题,使用CustomRenderer为Picker添加TextColor属性,始终无法触发OnElementPropertyChanged,进过几轮测试后发现一些问题。
1.在Control创建的过程中,自定义的属性是无法接受到消息的
OnElementPropertyChanged中实际上是有触发的,但不是TextColorProperty,而是Renderer Width X Y Height 5个VisualElement的属性,即使是Picker的Title属性或者VisualElement的其他属性,譬如IsEnabled,均无法触发,Control创建时触发的仅且只有那5个属性
但是在创建完成后,修改BinableProperty的任何属性均会触发
这个好像是Forms的设定问题,下面有该问题的讨论
http://forums.xamarin.com/discussion/26060/why-is-onelementpropertychanged-not-called-on-viewrenderer
2.如果Property的属性设置的是同一值,则也不会触发OnElementPropertyChanged
ViewRenderer<TView,TNativeView>中的:
大部分Control的Renderer都是继承上面的,但实际上该方法仅对三个Property进行了默认处理,未对值是否一致进行判断(可以通过去掉base.OnElementPropertyChanged (sender, e);进行测试),也就是问题2,是在这之前进行处理的,暂未发现在哪里
今天遇到一些奇怪的问题,使用CustomRenderer为Picker添加TextColor属性,始终无法触发OnElementPropertyChanged,进过几轮测试后发现一些问题。
1.在Control创建的过程中,自定义的属性是无法接受到消息的
OnElementPropertyChanged中实际上是有触发的,但不是TextColorProperty,而是Renderer Width X Y Height 5个VisualElement的属性,即使是Picker的Title属性或者VisualElement的其他属性,譬如IsEnabled,均无法触发,Control创建时触发的仅且只有那5个属性
但是在创建完成后,修改BinableProperty的任何属性均会触发
这个好像是Forms的设定问题,下面有该问题的讨论
http://forums.xamarin.com/discussion/26060/why-is-onelementpropertychanged-not-called-on-viewrenderer
2.如果Property的属性设置的是同一值,则也不会触发OnElementPropertyChanged
ViewRenderer<TView,TNativeView>中的:
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.get_PropertyName() == VisualElement.BackgroundColorProperty.PropertyName) { this.UpdateBackgroundColor(); return; } if (e.get_PropertyName() == VisualElement.InputTransparentProperty.PropertyName) { TElement element = this.Element; this.InputTransparent = element.InputTransparent; } if (e.get_PropertyName() == VisualElement.IsEnabledProperty.PropertyName) { this.UpdateIsEnabled(); } }
大部分Control的Renderer都是继承上面的,但实际上该方法仅对三个Property进行了默认处理,未对值是否一致进行判断(可以通过去掉base.OnElementPropertyChanged (sender, e);进行测试),也就是问题2,是在这之前进行处理的,暂未发现在哪里
相关文章推荐
- 两台Linux主机通信(服务器客户端搭建)
- SELinux深入理解
- Linux2.6.38内核启动流程分析
- 查看当前ubuntu版本号
- linux下tar的用法
- Linux内核同步方法
- 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?
- 编译通过的U-boot和使用的arm-linux-gcc编译器
- 手工运行 sudo dpkg --configure -a 解决此问题
- linux学习笔记-------压缩命令:zip 和 bzip2
- 转载URL之nginx 反响代理
- linux(Debian)下安装与MySql的安装、卸载、配置及使用
- linux下运行c或c++
- LinuxThreads 和 NPTL
- 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)
- nginx + tomcat 页面无法展示
- Linux下Android studio 创建项目build错误
- nginx 限制
- Linux的一些常用命令
- linux根据该文件夹的读取权限和权限运行差异