如何在WPF控件中添加Thikness属性的最小和最大限制?

时间:2012-11-12 10:14:38

标签: wpf wpf-controls dependency-properties

我想创建具有很少依赖项属性的自定义控件。

Thikness返回类型的那些属性。

我的控件将由Blend中的设计师使用。

在Blend中,一些Thikness属性是有限的。 例如,BorderThickness不能小于0.

如何使用最小值1和最大值3创建思考属性? (Blend应以与BorderThickness相同的方式验证数据 - 不允许用户输入)

1 个答案:

答案 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));