我在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”。
答案 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>