所以我有一个看起来像这样的TreeView:
<TreeView Name="elementTreeView"
ItemsSource="{Binding Elements}"
Width="Auto"
SelectedValuePath="Path" />
我还有一个TextBlock定义如下:
<TextBlock Text="{Binding ElementName=elementTreeView, Path=SelectedValue}" />
我的ModelView非常基本,包含您期望的内容。我正在寻找的是一种将我的ViewModel中的属性绑定到SelectedValue的方法。现在,文本块显示我需要的内容。有没有简单的方法来绑定这个属性?
答案 0 :(得分:4)
事实证明,这是因为没有非常正确地遵循MVVM模式。解决方案是只使用一个ViewModel对象。在ViewModel(其类型为ElementViewModel)对象的内部,我有类似的东西:
public ElementViewModel Element {
get {
return this;
}
}
然后我的TreeView声明看起来像这样:
<TreeView Name="treeView"
ItemsSource="{Binding Elements}"
Width="Auto"
SelectedValuePath="Element" />
之后,我所要做的只是在另一个视图中绑定到Element。
答案 1 :(得分:0)
您可以使用OneWayToSource的BindingMode将TreeView的SelectedValue属性绑定到ViewModel。然后使用OneWay绑定将TextBlock的Text属性绑定到同一个ViewModel属性。
答案 2 :(得分:-1)
您可以直接将TreeView绑定到ViewModel上的属性:
这将绑定到VM中的“SelectedItem”属性。
<TreeView Name="elementTreeView"
ItemsSource="{Binding Elements}"
SelectedValue="{Binding SelectedItem, Mode=OneWayToSource}"
Width="Auto"
SelectedValuePath="Path" />