Возможно, это всего лишь небольшой шаг к решению, но я пока не могу его получить.MVVM Распространение объектов
Я сделал несколько учебников по WPF для DataContext
и Binding
, но я не могу понять, как я мог бы использовать контекст и/или привязку между (двумя) страницами.
Например, когда вы смотрите на это: https://msdn.microsoft.com/en-us/library/ms754356%28v=vs.110%29.aspx
<Label>Enter a Name:</Label>
<TextBox>
<TextBox.Text>
<Binding Source="{StaticResource myDataSource}" Path="Name" UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>
Это будет результат:
Это простой пример, и нет никаких проблем работает и понимание этого, но я хочу:
- Заполните
TextBox
иLabel
от кода позади. Я пытался назватьTextBox
tb, а затем просто позвонитьtb.Text = "some text"
- он работает. Я также попытался присвоитьDataContext
как дляTextBox
, так и дляLabel
, а затем создать объект и заполнить DataContext с объектом - это тоже сработало. - Размещение
Label
на другой странице.
Задача 2 является тот, который действительно трудно для меня, особенно в сочетании с проблемой 1. Например: Когда я создаю объект в страницу 1 конструктора и назначить ему DataContext
(Ofcourse) только TextBox
на страница 1 будет содержать значение.
Я просто не знаю, как поделиться этим одним объектом. Я объявил на странице 1 со страницей 2, чтобы установить его также на DataContext
.
Возможно, я просто не нашел для себя идеального учебника или объяснения, чтобы понять, как DataContext
и Binding
действительно работает и как я могу обмениваться объектами между страницами и окнами.
Можете ли вы, ребята, помочь мне?
Если вам нужно больше информации, не стесняйтесь спрашивать;)
Есть ли у страницы 2 свой ViewModel? –
@DavidBeaumont Да, но только потому, что я не знаю, как разделить одну и ту же ViewModel между этими двумя страницами. – Sonnywhite
Я тоже новичок в MVVM, но я считаю, что лучшей практикой является наличие собственной ViewModel для представления. Я передал через оба ViewModels с помощью инструментария MVVM Lights, выполнив уведомление. –