【发布时间】:2016-02-10 08:25:37
【问题描述】:
我对 WPF 很陌生,在学习(特别是创建用户控件)时,我偶然发现了这个叫做“DependencyProperty”的东西。
我了解它在代码中的工作原理,但是当我可以创建一个属性并将其公开以供公众使用时,我们为什么以及何时需要它。
例子:
XAML:
<UserControl.....>
<StackPanel Orientation="Vertical">
<TextBlock x:Name="label" Text="Hello"/>
<TextBlock x:Name="text" Text="World!" />
</StackPanel>
</UserControl>
CS 文件:
public partial SampleUserCtrl : UserControl
{
public string LabelText { get { return this.label.Text; } set { this.label.Text = value; } }
public string TextBoxText { get { return this.text.Text; } set { this.text.Text = value; } }
}
【问题讨论】:
-
如果你看一下 SO 上的
dependency-properties标签,你会发现它'支持数据绑定,包括样式、继承、动画和默认值。它允许您在 DependencyObject' 上设置附加属性。例如,它们允许您在任何元素上设置Grid.Column和Grid.Row属性,因此周围的Grid可以正确定位它们。如果没有依赖属性,您必须为每个可能的 UI 元素添加Column和Row属性,这是不可行的。 -
依赖属性是属性。唯一真正的区别是您可以在 XAML 或代码中使用具有依赖属性的数据绑定和更改通知。你不能用“普通”属性来做到这一点。
-
在 StackOverflow 上提问之前请先做一些研究。开始阅读 MSDN 上的在线文档:Dependency Properties Overview。
-
自从我发布这个问题以来已经有一段时间了.. 花了一些时间阅读有关数据绑定等的内容。我现在了解它的目的并感谢在这里发布的每个人。由于我不能接受以下所有答案,因此我将投票代替:D