Невозможно привязать присоединенное свойство к другому свойству зависимости.

Я написал библиотеку управления. В этой библиотеке есть несколько настраиваемых панелей, которые заполняются пользовательскими UIElements. Поскольку каждый дочерний элемент в моей библиотеке должен иметь свойство «Заголовок», я написал следующее:

// Attached properties common to every UIElement
public static class MyLibCommonProperties
{
    public static readonly DependencyProperty TitleProperty =
        DependencyProperty.RegisterAttached( 
            "Title", 
            typeof(String),
            typeof(UIElement), 
            new FrameworkPropertyMetadata(
                "NoTitle", new PropertyChangedCallback(OnTitleChanged))
            );

    public static string GetTitle( UIElement _target )
    {
        return (string)_target.GetValue( TitleProperty );
    }

    public static void SetTitle( UIElement _target, string _value )
    {
        _target.SetValue( TitleProperty, _value );
    }

    private static void OnTitleChanged( DependencyObject _d, DependencyPropertyChangedEventArgs _e )
    {
       ...
    }
}

Затем, если я напишу это:

<dl:HorizontalShelf>
    <Label dl:MyLibCommonProperties.Title="CustomTitle">1</Label>
    <Label>1</Label>
    <Label>2</Label>
    <Label>3</Label>
</dl:HorizontalShelf>

, все будет работать нормально, и свойство получит указанное значение, но если я попытаюсь выполнить привязку это свойство для некоторого другого свойства UIElement DependencyProperty, например:

<dl:HorizontalShelf>
    <Label dl:MyLibCommonProperties.Title="{Binding ElementName=NamedLabel, Path=Name}">1</Label>
    <Label>1</Label>
    <Label>2</Label>
    <Label Name="NamedLabel">3</Label>
</dl:HorizontalShelf>

будет выдано исключение: «Привязка не может быть установлена ​​для свойства SetTitle типа Label. Привязка может быть установлена ​​только на DependencyProperty. объекта DependencyObject. "

Что мне не хватает? Привязка работает нормально, если вместо привязки к «Name» я привязываюсь к какому-нибудь другому присоединенному свойству, определенному в MyLibCommonProperties.

Заранее спасибо.

9
задан Trisped 5 June 2014 в 18:01
поделиться