c# – 在wpf中限制附加的依赖属性
发布时间:2020-12-15 06:18:44 所属栏目:百科 来源:网络整理
导读:我想只附加一个依赖属性到特定的控件. 如果只是一种类型,我可以这样做: public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty",typeof(object),typeof(ThisStaticWrapperClass));public stati
我想只附加一个依赖属性到特定的控件.
如果只是一种类型,我可以这样做: public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty",typeof(object),typeof(ThisStaticWrapperClass)); public static object GetMyProperty(MyControl control) { if (control == null) { throw new ArgumentNullException("control"); } return control.GetValue(MyPropertyProperty); } public static void SetMyProperty(MyControl control,object value) { if (control == null) { throw new ArgumentNullException("control"); } control.SetValue(MyPropertyProperty,value); } (所以:限制Get / Set-Methods中的控制类型) 但是现在我想允许该属性附加在不同类型的控件上. 那么我该如何限制我的DependencyProperty到一个选择的控件? 解决方法
…通常由 为什么不检查方法体中的类型并抛出InvalidOperationException(如果不允许) 请注意,这些CLR-Wrappers不应该在设置旁边包含任何代码,如果在XAML中设置了属性,则会忽略它们,尝试在设置器中抛出异常,如果只使用XAML设置,则不会出现价值. 改用回调: public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached ( "MyProperty",typeof(ThisStaticWrapperClass),new UIPropertyMetadata(null,MyPropertyChanged) // <- This ); public static void MyPropertyChanged(DependencyObject o,DependencyPropertyChangedEventArgs e) { if (o is TextBox == false && o is ComboBox == false) { throw new InvalidOperationException("This property may only be set on TextBoxes and ComboBoxes."); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |