将TreeView选项绑定到ViewModel

所以我有一个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" />

在那之后,我所需要做的就是在另一种观点上与Element结合。


您可以使用OneWayToSource的BindingMode将TreeView的SelectedValue属性绑定到ViewModel。 然后使用OneWay绑定将TextBlock的Text属性绑定到相同的ViewModel属性。


您可以直接将TreeView绑定到ViewModel上的属性:

这将绑定到VM中的“SelectedItem”属性。

<TreeView   Name="elementTreeView"
                    ItemsSource="{Binding Elements}" 
                    SelectedValue="{Binding SelectedItem, Mode=OneWayToSource}"
                    Width="Auto"
                    SelectedValuePath="Path" />
链接地址: http://www.djcxy.com/p/1183.html

上一篇: Binding TreeView selection to ViewModel

下一篇: Invoking C++ code from Java (GCJ)