我们需要在WPF中使用依赖属性的场景是什么?

时间:2010-12-29 16:44:15

标签: wpf dependency-properties

我们可以通过简单的CLR属性实现绑定。为什么我们需要使用DP?

3 个答案:

答案 0 :(得分:1)

您何时需要DP超过CLRP s?

  • 当您需要binding
  • 当您需要property value change callback(默认实施)
  • 当您需要property value validation
  • 当您需要animation
  • 当您需要property value inheritance
  • 当您需要attach a property value到另一个元素(附加属性,但仍然)
  • 当您需要styling

其中一些可以在CLR属性中实现。但是,DP s,它的一块蛋糕。

答案 1 :(得分:0)

通常这些是在UserControl和派生控件中声明的。

您可以将绑定到 CLR属性,但不能将绑定到CLR属性;你需要一个依赖属性来做任何绑定。

编辑(回复评论)

假设您需要一个TextBox,但您想要将其自定义为在“EditMode”和“ReadMode”中具有不同的行为。您需要创建派生类或UserControl;在任何一种情况下,你都会添加一个DependencyPropery。

public class TextBoxWithModes : TextBox
{
    public bool EditMode
    {
        get { return (bool) GetValue(EditModeProperty); }
        set { SetValue(EditModeProperty, value); }
    }

    public static readonly DependencyProperty EditModeProperty = DependencyProperty.Register(
        "EditMode", typeof (bool), typeof (TextBoxWithModes));
}

有了这个,您可以在XAML中声明它:

<Namespace:TextBoxWithModes Text="enter text here"
    Width="200"
    HorizontalAlignment="Center"
    EditMode="{Binding IsChecked, ElementName=editModeCheckBox}" />

答案 2 :(得分:0)