Привязка данных в пользовательском элементе управления - PullRequest
1 голос
/ 13 марта 2012

У меня есть пользовательский элемент управления, который имеет свойство Title, привязанное к свойству Text TextBlock:

XAML

<TextBlock Grid.Column="0" Text="{Binding ElementName=me,Path=Title}" HorizontalAlignment="Left" VerticalAlignment="Top" />

Код позади

public String Title
{
    get { return (String)GetValue(TitleProperty); }
    set { SetValue(TitleProperty, value); }
}

public static readonly DependencyProperty TitleProperty =
    DependencyProperty.Register("Title", typeof(String), typeof(ClosableTabHeader), new UIPropertyMetadata(""));

ИЯ хочу связать это свойство Title с другим свойством в главном окне:

XAML

<my:ClosableTabHeader Title="{Binding ElementName=me,Path=ShortenAmount}" />

Код позади

public Int32 ShortenAmount
{
    get { return (Int32)GetValue(ShortenAmountProperty); }
    set { SetValue(ShortenAmountProperty, value); }
}

public static readonly DependencyProperty ShortenAmountProperty =
    DependencyProperty.Register("ShortenAmount", typeof(Int32), typeof(MainWindow), new UIPropertyMetadata(0));

Однако текстовый блок не обновляется.

Когда я заменяю объявление usercontrol на TextBlock, оно работает нормально:

<TextBlock Text="{Binding ElementName=me,Path=ShortenAmount}" />

Хотя, конечно, существуют обходные пути, с точки зрения того, что я пытаюсь сделать сам, могу ли язнаете, где я ошибся?

1 Ответ

1 голос
/ 13 марта 2012

Проблема заключается в вашем ElementName. Из вашего кода my:ClosableTabHeader это не названо как me. me выглядит как ваш MainWindow. Но вы используете me и Title вместе в этой привязке ...

   <TextBlock Grid.Column="0" Text="{Binding ElementName=me,Path=Title}"  
              HorizontalAlignment="Left" VerticalAlignment="Top" /> 

, где Title - это свойство ClosableTabHeader, а не MainWindow (ну, MainWindow.Title существует как встроенное свойство WPF, но я уверен, что мы не говорим об этом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...