在没有代码的情况下更新视图模型的属性

时间:2009-11-19 19:27:22

标签: wpf data-binding treeview

我在Combobox控件中使用TreeView(来自here)。我有一个ViewModel对象,它是我窗口的DataContext。

我希望发生的事情是当树视图/组合框中的所选项目发生更改时,我希望我的ViewModel上的属性可以使用所选项目进行更新。理想情况下,我希望能够在xaml中完全执行此操作,但我无法弄清楚如何执行此操作。

控件有一个“SelectedTreeViewItem”依赖属性,所以基本上我想将该属性绑定到我的ViewModel对象上的依赖属性,但我不知道到底需要做什么(Trigger?EventTrigger?)。绑定只需要一种方式,因为我只希望我的视图模型的属性反映当前在控件中选择的内容;我不需要从视图模型中更改控件的当前选定项。我还是WPF的新手。

这是我的控件的代码,试图将SelectedTreeViewItem属性绑定到我的视图模型上的属性。它不起作用,我的视图模型上的属性始终为null。

    <local:TreeViewCombo
        x:Name="encounterCodeSelector"
        ItemsSource="{Binding Path=EncounterCodes}"
        ItemTemplate="{StaticResource EncounterCodesTemplate}"             
        Style="{StaticResource TreeViewInComboBox}"
        SelectedTreeViewItem="{Binding Path=SelectedEncounterCode, Mode=OneWay}"
        Canvas.Left="171" Canvas.Top="377" Width="456">
    </local:TreeViewCombo>

编辑:

将模式从“OneWay”更改为“OneWayToSource”。

2 个答案:

答案 0 :(得分:0)

使用BindingMode=OneWay将SelectedTreeViewItem绑定到ViewModel的属性。标准绑定应该可以正常工作。

答案 1 :(得分:0)

将模式从“OneWay”更改为“OneWayToSource”。

    <local:TreeViewCombo
        x:Name="encounterCodeSelector"
        ItemsSource="{Binding Path=EncounterCodes}"
        ItemTemplate="{StaticResource EncounterCodesTemplate}"             
        Style="{StaticResource TreeViewInComboBox}"
        SelectedTreeViewItem="{Binding Path=SelectedEncounterCode, Mode=OneWayToSource}"
        Canvas.Left="171" Canvas.Top="377" Width="456">
    </local:TreeViewCombo>