我想创建具有很少依赖项属性的自定义控件。
Thikness返回类型的那些属性。
我的控件将由Blend中的设计师使用。
在Blend中,一些Thikness属性是有限的。 例如,BorderThickness不能小于0.
如何使用最小值1和最大值3创建思考属性? (Blend应以与BorderThickness相同的方式验证数据 - 不允许用户输入)
答案 0 :(得分:1)
您可以在注册时定义validation / coerce属性回调。此MSDN page具有实现依赖项属性验证的更详细说明。
简而言之 - 您可以在注册时为任何属性指定验证和强制回调,并检查这些回调中的厚度值。
例如,以下是Border
的{{1}}属性的注册方式(来自ILSpy的代码):
BorderThickness
以下是验证方法本身:
public static readonly DependencyProperty BorderThicknessProperty =
DependencyProperty.Register(
"BorderThickness",
typeof(Thickness),
typeof(Border),
new FrameworkPropertyMetadata(default(Thickness),
FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender,
new PropertyChangedCallback(Border.OnClearPenCache)),
new ValidateValueCallback(Border.IsThicknessValid));