要使列表框与TreeView保持同步,需要将其SelectedItem绑定到TreeView的SelectedItem。绑定模式必须是单向的,因为TreeView SelectedItem是只读的。下面是一个例子:
<TreeView Name="CategoryTreeView" DockPanel.Dock="Top" MinHeight="50" MinWidth="100">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="x:Type local:Category"
ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<ListBox Name="CategoryList" SelectedItem="{Binding ElementName=CategoryTreeView, Path=SelectedItem, Mode=OneWay}"/>
我创建了一个带有名字和子类(列表)的基本类别类。用列表框更新TreeView需要做更多的工作,但这是可行的。如果你想走两条路,请告诉我。