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

回到顶部