Как данные связывают свойство text TextBlock со свойством text TextBox - PullRequest
0 голосов
/ 31 января 2011

У меня есть приложение WPF с двумя страницами. На первой странице находится TextBox (boxSource). На второй странице у меня есть TextBlock (blockDestination). Я хочу привязать данные в XAML, свойство Text boxSource к свойству Text blockDestination.

Я установил DataContext второй страницы при первой инициализации приложения. Я устанавливаю blockDestination следующим образом:

<TextBlock Name="blockDestination" Grid.Row="0" Grid.Column="1" Text="{Binding boxSource, Path=Text, Mode=OneWay}" />

Это не забирает значение TextBox. Я предполагаю, что это потому, что TextBox является переменной, а не свойством?

Может кто-нибудь объяснить проблему, и есть ли элегантное решение?

Спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Чтобы этот XAML работал, ваша «первая страница» должна быть задана в качестве контекста данных второй страницы, а переменная boxSource определена как свойство, чтобы в установщике вы могли вызывать событие PropertyChanged.

Матиас прав, однако, это довольно хрупкий способ реализовать это, и одно из мест, где подход MVVM будет более устойчивым в долгосрочной перспективе.

1 голос
/ 31 января 2011

Элегантным решением было бы определение модели представления, общей для всех страниц.Вы должны всегда привязываться к свойствам модели представления и избегать привязки к элементам пользовательского интерфейса.Используя модель представления, вы всегда можете получить доступ ко всем необходимым значениям и определить несколько презентаций на разных страницах.

Я читал кое-что о страницах, имеющих свое собственное объектное пространство, так что элементы пользовательского интерфейса могут иметь одинаковые имена на разных страницах.,Также может случиться, что первая страница недоступна после загрузки второй.Тогда цель привязки будет недоступна.

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