【发布时间】:2018-02-23 02:07:42
【问题描述】:
考虑一个任务类:
TaskID
ParentID
Title
<several other properties>
Description
SubTasks <-- a collection of tasks
首先我填充一个名为 AllTasks 的任务层次结构,然后通过以下方式将其加载到 TreeView 中:
TaskTree.DataContext = AllTasks
效果很好。现在,当用户单击 TreeView 中的任务时,我想用任务数据填充其他几个控件。我将只考虑 Description 属性,因为它足以说明问题。
我的 TreeView 定义如下:
<TreeView
x:Name="TaskTree"
SelectedValuePath="Task">
<TreeView ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=SubTasks}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</TreeView>
应该显示用户选择的任务的描述属性的文本框由以下定义:
<DockPanel
DataContext="{Binding ElementName=TaskTree}">
<TextBox
x:Name="txtDescription"
Text="{Binding Path=SelectedItem.Discussion}"
</DockPanel>
TextBox 中没有显示任何内容。我试过设置....
Text="{Binding Path=Discussion}"
...但这也不起作用。我尝试了其他组合,但无济于事。什么有效?
【问题讨论】:
-
你应该为此实现一个视图模型。请参阅 MVVM。