Привязка WPF к ViewModel другого элемента

#wpf #binding #viewmodel

#wpf #привязка #viewmodel

Вопрос:

Просто пример. Пользовательский контроллер имеет ViewModel со свойством, называемым «Test»

Как я мог бы привязать текстовое поле к этому конкретному свойству? Можете ли вы получить доступ к ViewModel братьев и сестер?

 <TextBox Text="{Binding ElementName=myControl, Path=ViewModel.Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />
  

Комментарии:

1. Действительно ли у вашего CustomControl есть свойство зависимости , называемое ViewModel?

2. не обязательно должно быть свойством зависимости @Хенк Холтерман

3. Нет, этого не произошло, добавление к нему DP заставило его работать!

4. Я имею в виду, что это могло бы быть и обычным свойством, в этом случае элемент управления должен был бы реализовать INotifyPropertyChanged однако все это не нужно, когда вы уже можете привязаться к свойству DataContext

Ответ №1:

Родственные ViewModel были бы в его DataContext try

 <TextBox Text="{Binding ElementName=myControl, Path=DataContext.Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />
  

Комментарии:

1. Потрясающе, спасибо за помощь, это позволило мне сделать это, оставив ViewModel закрытым и не имея DP.

2. Этот способ позволяет чередовать две разные ViewModels, в том числе в одной строке, и без создания нескольких экземпляров ViewModels

Ответ №2:

Может быть, это то, что вам требовалось-

 <TextBox Text="{Binding Source={x:Static local:VieModel}, Path=Test}"></TextBox>
<Controls:CustomControl x:Name="myControl" />
  

Не забудьте добавить расширение разметки, чтобы включить пространство имен, в котором существует ваш класс Viewmodel — xmlns:local="clr-namespace:ViewModel NameSpace"