Как связать локальную переменную в WPF - PullRequest
0 голосов
/ 21 июня 2010

У меня есть Silverlight usercontrol.Содержит объект Service Entity.см. ниже

public partial class MainPage : UserControl
{
   public ServiceRef.tPage CurrentPage { get; set; }
...
}

Мне нужно привязать CurrentPage.Title к TextBox

Мой xaml здесь

<TextBox Text="{Binding Path=CurrentPage.Title, RelativeSource={RelativeSource self}}"></TextBox>

Но это не работает.

Как это сделать?

Ответы [ 3 ]

2 голосов
/ 21 июня 2010

Чтобы это работало, вам нужно реализовать INotifyPropertyChanged в своем классе и вызвать событие PropertyChanged для CurrentPage, когда оно установлено (это также означает, что вы не сможете использовать авто свойства; вам придется использовать собственную частную переменную поддержки экземпляра и самостоятельно кодировать get { } и set { }.

Что происходит, так это то, что элемент управления привязывается к значению, прежде чем вы установите CurrentPage,Поскольку вы никому не уведомляете об изменении свойства, оно не знает, как обновить связанные данные.Реализация INotifyPropertyChanged исправит это.

Или вы можете просто вручную установить свойство Text в установщике.

0 голосов
/ 21 июня 2010

установить UpdateSourceTrigger="PropertyChanged" в XAML.

0 голосов
/ 21 июня 2010

Измените вашу разметку на

<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=CurrentPage.Title}" />

. Назначив RelativeSource={RelativeSource self}, вы говорите TextBlock привязать себя и искать свойство с именем CurrentPage на самом TextBlock, а не народитель Window.

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