2017-09-14 63 views
1

考慮一個任務等級:如何使用一個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

回答

1

您不會在名爲「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

相關問題