在真实场景中使用/创建依赖属性的真正用途是什么?
如果我们使用通知目的,那么我将选择InotifyChanged Property。
我从未在实时项目中看到/使用过依赖属性的真实用途吗?
有人可以告诉我实时Scenrios需要DP吗?
答案 0 :(得分:2)
如果您创建的自定义控件包含您希望可绑定的属性(例如,代码如下),则无法使用INotifyPropertyChanged
,您必须使用DependencyProperty
。
假设你有UserControl
这样:
public partial class MyUserControl : UserControl
{
public List<ItemViewModel> ItemsSource
{
get { return (List<ItemViewModel>)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
// Using a DependencyProperty as the backing store for ItemsSource. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(List<ItemViewModel>), typeof(MyUserControl ), new PropertyMetadata(null));
}
然后您可以通过这种方式在主窗口中设置ItemsSource
( DependencyProperty )的绑定:
<uc:MyUserControl ItemsSource="{Binding MyItems}" />
摘要:
通常,绑定看起来像这样:T = "{Binding S}"
T
是绑定的目标。 S
是绑定的来源。
T
只允许为 DependencyProperty 。例如:
MyDependencyProperty =&#34; {Binding something}&#34;
S
通常是 INPC-Property 。 e.g:
某事=&#34; {绑定MyINPCProperty}&#34;
答案 1 :(得分:1)
来自MSDN:
依赖属性的目的是提供一种计算方法 基于其他输入值的属性值。这些 其他输入可能包括系统属性,如主题和用户 偏好,及时财产确定机制,如 数据绑定和动画/故事板,多用途模板等 作为资源和样式,或通过父子知道的值 与元素树中其他元素的关系。另外,一个 可以实现依赖属性以提供自包含 验证,默认值,监视对其他更改的回调 属性,以及可以强制基于属性值的系统 潜在的运行时信息派生类也可以改变一些 通过覆盖现有财产的具体特征 依赖属性元数据,而不是覆盖实际 实现现有属性或创建新属性。