观察附带属性和行为的示例时,我看到了各种使用
FrameworkPropertyMetadata
、UIPropertyMetadata
和 PropertyMetadata
的混杂。由于它们都构成了继承层次结构,那么我如何选择要使用哪个呢?FrameworkPropertyMetadata
、UIPropertyMetadata
和 PropertyMetadata
的混杂。由于它们都构成了继承层次结构,那么我如何选择要使用哪个呢?这些类用于报告依赖属性的某些行为方面。
检查不同的类以获取它们提供的选项。
例如,
如果您只想通过dp支持属性并提供默认值,请使用PropertyMetadata
,
如果要指定动画行为,请使用UIPropertyMetadata
,
但是,如果某个属性影响WPF框架级别的东西,例如元素布局、父布局或数据绑定,请使用FrameworkPropertyMetadata
。
详细信息请参见msdn http://msdn.microsoft.com/en-us/library/ms751554.aspx
FrameworkPropertyMetadata
的一个有用特性是你可以定义BindsTwoWayByDefault
的行为。否则,依赖属性默认是OneWay。Mode=TwoWay
。如果你将这个模式设置为默认值,你就不再需要为每个绑定设置它了。new FrameworkPropertyMetadata(_myDefaultValue_, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)
完整示例:
public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register(
"IsSelected", typeof(bool), typeof(MyClass),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);
public bool IsSelected
{
get { return (bool)GetValue(IsSelectedProperty); }
set { SetValue(IsSelectedProperty, value); }
}