如何为自定义WPF控件添加最小和最大验证?

j2datikz  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(139)

我想创建一个具有多个WPF依赖项属性的自定义控件。
其中一个属性是返回Thickness对象。
自定义控件应该适合也被设计人员在Microsoft Blend中使用。
Blend允许限制诸如Thickness之类的属性。例如BorderThickness不能小于0。
如何创建自定义控件的厚度属性,其中最小值为1和最大值为3?我希望混合也将视觉验证数据的方式一样,边界厚度为微软默认控件。

368yc8dk

368yc8dk1#

你可以在注册的时候定义validation / coerce属性回调。这个MSDN page有一个关于实现依赖属性验证的更详细的描述。
简而言之,你可以在注册任何属性时为它指定验证和强制回调,并检查这些回调中的厚度值。
例如,下面是BorderBorderThickness属性是如何注册的(代码来自ILSpy):

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

字符串
下面是验证方法本身:

private static bool IsThicknessValid(object value)
{
    return ((Thickness)value).IsValid(false, false, false, false);
}

相关问题