当前位置: 首页 > 编程语言 > C#

关于DependencyPropertywithMultipleFrameworkElementInstancesSharing的行为

时间:2023-04-10 13:03:49 C#

关于DependencyPropertywithMultipleFrameworkElementInstances的行为所以我尝试使用DependencyProperty来解决我的跨子视图传递本地ViewModel的问题。然而,我的脑海里突然冒出一个问题。例如,我需要创建某个FrameworkElement的多个实例,比如UserControl。UserControl定义DependencyProperty。如书中所述,依赖属性实例应该是静态的和只读的。DependencyProperty在这种情况下如何工作?它是否与传统的UserControl属性或传递给DependencyProperty的任何对象实例相同,并且它将传递给所述UserControl的所有实例?是的,它将作为普通财产使用。如果您需要特定控件的属性,即单个控件的一个属性,则可以只使用依赖属性。它们将通过该类的所有实例。但是,如果您需要多个控件的属性,则应使用附加的依赖属性,该属性将对特定命名空间中的所有成员可用。诸如Canvas.Top、DockPanel.Dock之类的属性具有附加的DependencyProperty。附加依赖属性的示例:publicclassMyDependencyClass:DependencyObject{publicstaticreadonlyDependencyPropertyIsSelectedProperty;publicstaticvoidSetIsSelected(DependencyObjectDepObject,布尔值){DepObject.SetValue(IsSelectedProperty,value);}publicstaticBooleanGetIsSelected(DependencyObjectDepObject){return(Boolean)DepObject.GetValue(IsSelectedProperty);}privatestaticboolIsSelectedValid(objectValue){if(Value.GetType()==typeof(bool)){returntrue;}else{返回错误;}}staticMyDependencyClass(){FrameworkPropertyMetadataMetaData=newFrameworkPropertyMetadata((Boolean)false);IsSelectedProperty=DependencyProperty.RegisterAttached("IsSelected",typeof(Boolean),typeof(MyDependencyClass),MetaData,newValidateValueCallback(IsSelectedValidthem));OnPropertyChangedCallback、ValidateValueCallback等函数,它们可以放在一个额外的逻辑中。这些属性在XAML中也可用。添加“本地”命名空间:xmlns:local="clr-namespace:SampleApp"为元素定义:...在触发器中访问属性:在代码中使用附加依赖属性:if(CurrentButtonName==MyButton.Name){MyDependencyClass.SetIsSelected(当前按钮,真);}else{MyDependencyClass.SetIsSelected(CurrentButton,false);}更多信息参见:http://msdn.microsoft.com/en-us/library/ms749011.aspx以上是C#学习教程:关于多个FrameworkElement实例的DependencyProperty行为的所有分享内容。如果对你有用,需要进一步了解《C#学习教程》,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: