WPF绑定自定义控件的依赖属性到ViewModel[操作系统入门]
首先关于数据绑定的基础知识,参见官方文档:https://docs.microsoft.com/en-us/dotnet/desktop-wpf/data/data-binding-overview
从上面文档中可以看出,数据绑定是在DependencyProperty与ViewModel的Property之间一种联系。
所以我们需要在自定义控件里实现DependencyProperty, 在ViewModel上实现Property,即拥有get、set方法的字段。还有INotifyPropertyChanged : https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanged?redirectedfrom=MSDN&view=netframework-4.8
在使用framework里的控件时,我们一般不会指定BindingMode: https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.bindingmode?view=netframework-4.8#System_Windows_Data_BindingMode_TwoWay
因为大部分控件都是默认TwoWay。
注意,这个默认,其实就是在framework里显示指定了TwoWay。
所以当我们的自定义控件的DependencyProperty没有被更新的时候,考虑要设置BindingMode
BindsTwoWayByDefault = true,DefaultUpdateSourceTrigger
= UpdateSourceTrigger.PropertyChanged
完整的代码,以Progress属性为例:
publicint Progress{
get { return (int)GetValue(ProgressProperty); }set { SetValue(ProgressProperty, value); }}
publicstaticreadonly DependencyProperty ProgressProperty =DependencyProperty.Register(
"Progress", typeof(int), typeof(MyUserControl), new FrameworkPropertyMetadata(0, OnProgressChangedCallback, OnProgressCoerceValueCallback) {BindsTwoWayByDefault
= true,DefaultUpdateSourceTrigger
= UpdateSourceTrigger.PropertyChanged});
参考资料:
https://www.dominikschmidt.net/2010/12/net-c-binding-custom-dependencyproperty-to-viewmodel-property/
WPF 绑定自定义控件的依赖属性到ViewModel
原文:https://www.cnblogs.com/crazyghostvon/p/dependencyproperty.html
以上是 WPF绑定自定义控件的依赖属性到ViewModel[操作系统入门] 的全部内容, 来源链接: utcz.com/z/517727.html