Таким образом, у меня есть TreeView, который выглядит примерно так:
<TreeView Name="elementTreeView"
ItemsSource="{Binding Elements}"
Width="Auto"
SelectedValuePath="Path" />
Мне также определили TextBlock следующим образом:
<TextBlock Text="{Binding ElementName=elementTreeView, Path=SelectedValue}" />
Мой ModelView является довольно основным и содержит точно, что Вы ожидали бы. То, что я ищу, является способом связать свойство в моем ViewModel к SelectedValue. Прямо сейчас текстовый блок отображает то, в чем я нуждаюсь. Там какой-либо простой способ состоит в том, чтобы связать это свойство?
Получается, что это результат неправильного следования паттерну MVVM. Решением было просто использовать один объект ViewModel. Внутри объекта ViewModel (тип которого - ElementViewModel) у меня было что-то вроде:
public ElementViewModel Element {
get {
return this;
}
}
Тогда мое объявление TreeView выглядело примерно так:
<TreeView Name="treeView"
ItemsSource="{Binding Elements}"
Width="Auto"
SelectedValuePath="Element" />
После этого все, что мне нужно было сделать, это привязать к элементу в другом моем представлении.
Вы можете использовать BindingMode OneWayToSource для привязки свойства TreeView SelectedValue к вашей ViewModel. Затем привяжите свойство TextBlock's Text с помощью OneWay привязки к тому же свойству ViewModel.
Вы можете привязать TreeView к свойству вашей ViewModel напрямую:
Это приведет к привязке к свойству "SelectedItem" в VM.
<TreeView Name="elementTreeView"
ItemsSource="{Binding Elements}"
SelectedValue="{Binding SelectedItem, Mode=OneWayToSource}"
Width="Auto"
SelectedValuePath="Path" />