2010-12-15 2 views
1

Может ли кто-нибудь ответить на действительно разочаровывающий вопрос новичка, пожалуйста ?! Я искал ответ на несколько дней. & нашел ответы на поставленные вопросы, но ничего, что точно решает мою проблему.WPF - как связать с источником на разных страницах?

Я пытаюсь привязать текстовое поле к выбранному в данный момент элементу в представлении listview (который сам привязан к Observablecollection объектов, не уверен, если это имеет значение).

Это список находится в RecentEntities.xaml & текстовое поле находится в Relationship.xaml, оба из которых расположены в главном окне из Maincontrol.xaml. Таким образом, они находятся в одном и том же пространстве имен, но они находятся на разных страницах, поэтому использование ElementName не работает, поскольку это просто похоже на текущую страницу.

Проблема, возникающая при попытке определить источник привязки текстового поля в Relationship.xaml, как мне ссылаться на выбранный элемент списка в RecentEntities.xaml? Я задавался вопросом об использовании RelativeSource, но это, по-видимому, позволяет вам перемещаться по дереву до предка текущего элемента управления. Из-за того, как MainControl настроен, мне нужно будет перейти к родительскому элементу текстового поля, а затем к родному брату родителя, а затем к ребенку его ребенка, чтобы попасть в список!

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

Действительно ли это так сложно, как кажется ?! Любые указатели или помощь были бы блестящими, спасибо, что нашли время ответить :) Я не писал здесь раньше, поэтому, если вам нужны какие-либо фрагменты кода, пожалуйста, дайте мне знать.

ответ

2

Можете ли вы создать ViewModel, который будут использоваться обоими представлениями? Выделите выбранный элемент в списке, связанный с свойством в ViewModel, и привяжите текстовое поле к тому же свойству. Пока оба представления ссылаются на один и тот же экземпляр viewmodel, он должен работать.

0

С двумя файлами XAML вам понадобится использовать модель или модель просмотра (в зависимости от вашего выбора архитектуры) для синхронизации.

Для списка можно использовать SelectedValue для привязки к свойству, используйте Mode=OneWayToSource для этого связывания, так как вы просто хотите обновить свойство, а не изменять выбор в самом списке.

+0

Большое спасибо за ответы! Я ничего не знал о подходе Viewmodel, но, изучив его немного, это, похоже, способ добиться того, что мне нужно. Теперь нужно выяснить, как адаптировать весь код к этой модели! Еще раз спасибо, вы оба были очень полезны. – iambic77 2010-12-17 10:33:46

Смежные вопросы