0

依存関係プロパティがほとんどないカスタム コントロールを作成したいと考えています。

これらの Thihness 戻り型のプロパティ。

私のコントロールは、Blend のデザイナーによって使用されます。

Blend では、Thickness プロパティの一部が制限されています。たとえば、BorderThickness を 0 未満にすることはできません。

最小値が 1 で最大値が 3 の thinkness プロパティを作成するには? (Blend は BorderThickness と同じ方法でデータを検証する必要があります - ユーザー入力は許可されていません)

4

1 に答える 1

1

登録時に検証/強制プロパティ コールバックを定義できます。このMSDN ページには、依存関係プロパティの検証の実装に関する詳細な説明があります。

要するに、プロパティを登録するときに検証および強制コールバックを指定し、それらのコールバック内の厚さの値を確認できます。

たとえば、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);
}
于 2012-11-12T10:54:11.413 に答える