我们可以通过简单的CLR属性实现绑定。为什么我们需要使用DP?
答案 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)