替代(过时的)GetValue和SetValue方法

时间:2018-02-16 19:45:33

标签: c# .net wpf dependency-properties

我正在尝试获取并设置DependencyProperty。 DependencyProperty用于描述正则表达式语句的掩码,用于控制文本框中的用户输入。有问题的代码如下:

public string Mask
{
     get { return (string)GetValue(MaskProperty); }
     set { SetValue(MaskProperty, value); }
}

public static readonly DependencyProperty MaskProperty = 
    DependencyProperty.Register("Mask", typeof(string), typeof(MaskTextBox), new PropertyMetadaa(string.Empty));
除了GetValue和SetValue之外,

所有似乎都在工作。现在,我知道我可以使用System.Workflow命名空间来使这些工作,但我也知道命名空间已经过时,所以我宁愿不使用它。

似乎System.Activities命名空间被设计为System.Workflow的最新替代品,所以考虑到这一点,是否有一个System.Activities替代GetValue和SetValue方法?如果没有,那么这些方法的有效替代方案是什么?

1 个答案:

答案 0 :(得分:2)

任何应包含在WPF绑定机制中的类都需要从DependencyObject或其子类之一派生:

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.ContentElement
      System.Windows.Controls.DataGridColumn
      System.Windows.Controls.GridViewColumn
      System.Windows.Controls.Ribbon.Primitives.StarLayoutInfo
      System.Windows.Controls.TextSearch
      System.Windows.Controls.ViewBase
      System.Windows.Data.BindingGroup
      System.Windows.Data.CollectionContainer
      System.Windows.Data.CollectionViewSource
      System.Windows.Freezable
      System.Windows.Ink.GestureRecognizer
      System.Windows.Media.Media3D.Visual3D
      System.Windows.Media.Visual
      System.Windows.Navigation.JournalEntry
      System.Windows.TriggerAction
      System.Windows.TriggerBase
      System.Windows.VisualState
      System.Windows.VisualStateGroup
      System.Windows.VisualStateManager
      System.Windows.VisualTransition

(WPF使用进一步派生的WPF,比如TextBox等 - 它们在UIElement / FrameWorkElement之下。)

DependencyObject提供了实现DependencyPropertys所需的GetValue / SetValue方法。

你不能简单地将DependencyProperty放在Winforms-Class中并认为它会起作用 - 你可以做到,但它不会。基础管道根本就不存在。