2

カスタムの添付プロパティがありますが、データバインディングでアクセサーにアクセスすることはありません。これらのアクセサーは、アタッチされたプロパティが変更されるたびにアクセスされることを意図していますか?

  public static readonly DependencyProperty CharacterColumnNumberProperty =
        DependencyProperty.RegisterAttached("CharacterColumnNumber", typeof(int), typeof(DragCanvas), new UIPropertyMetadata(1));

    public static int GetCharacterColumnNumber(UIElement uiElement)
    {
        if (uiElement != null)
            return (int)uiElement.GetValue(CharacterColumnNumberProperty);
        else return 0;
    }

    public static void SetCharacterColumnNumber(UIElement uiElement, int value)
    {
        if (uiElement != null)
        {
            uiElement.SetValue(CharacterColumnNumberProperty, value);
            DragCanvas.SetLeft(uiElement, value * 10);
        }
    }

XAML:

 <Setter Property="local:DragCanvas.CharacterColumnNumber" Value="{Binding Path=CharacterColumnNumber, Mode=TwoWay}" />
4

1 に答える 1

4

いいえそうではありません。内部プロパティエンジンがこれらの値をいつ変更するかを知りたい場合は、UIPropertyMetadataのPropertyChangedCallbackパラメーターのデリゲートを渡します。

このデリゲートは、プロパティが変更されるたびに呼び出されます。これは、CLRプロパティを介して行われたか、依存関係プロパティエンジンの内部的な変更(つまり、バインディング)を介して行われたかに関係ありません。

于 2009-10-15T16:59:09.143 に答える