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 回答