如何使用一个TreeView作为绑定源其他控件

问题描述:

考虑一个任务等级:如何使用一个TreeView作为绑定源其他控件

TaskID 
ParentID 
Title 
<several other properties> 
Description 
SubTasks <-- a collection of tasks 

首先我填充叫AllTask​​s任务的层次结构,然后将其加载到TreeView控件:

TaskTree.DataContext = AllTasks 

工作正常。现在,我想在用户从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> 

什么也不表示在向上文本框。我尝试设置....

Text="{Binding Path=Discussion}" 

...但那也行不通。我尝试了其他组合,但无济于事。什么工作?

+0

你应该实施一个视图模型。请参阅MVVM。 – dymanoid

您不会在名为“TaskTree”的外部TreeView中选择任何Task。卸下外一个:

<TreeView ItemsSource="{Binding}" x:Name="TaskTree"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:Task}" ItemsSource="{Binding Path=SubTasks}"> 
      <TextBlock Text="{Binding Path=Title}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 

...然后尝试绑定到SelectedItem属性:

<TextBox x:Name="txtDescription" Text="{Binding Path=SelectedItem.Discussion, ElementName=TaskTree}" /> 
+0

我知道,我盯着那个XAML HOURS,从来没有注意到我在另一个树视图中有一个树视图。当然这不正确。我的脸有多红。所以我所要做的只是删除第二个“ SezMe

+0

我注意到我刚刚在我的代码中删除了我错过了要告诉你他他 – Ramankingdom

+0

@SezMe:请记住投票给有帮助的答案:https://stackoverflow.com/help/someone-answers – mm8