将TreeView选择绑定到ViewModel

时间:2010-06-07 20:12:41

标签: wpf binding

所以我有一个看起来像这样的TreeView:

<TreeView   Name="elementTreeView"
                        ItemsSource="{Binding Elements}" 
                        Width="Auto"
                        SelectedValuePath="Path" />

我还有一个TextBlock定义如下:

<TextBlock Text="{Binding ElementName=elementTreeView, Path=SelectedValue}" />

我的ModelView非常基本,包含您期望的内容。我正在寻找的是一种将我的ViewModel中的属性绑定到SelectedValue的方法。现在,文本块显示我需要的内容。有没有简单的方法来绑定这个属性?

3 个答案:

答案 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" />
相关问题