2013-11-25 38 views
1

我試圖在TreeView內創建樹頭,但沒有顯示。在我的程序中,我在畫布上創建了一系列具有名稱的橢圓對象。我想要做的是:標題將不會顯示在WPF TreeView

創建橢圓對象時,使用橢圓名稱在TreeView內創建標題。

由於第一個橢圓的名稱爲「Circle01」,因此這是我試圖在釋放鼠標左鍵時在TreeView中顯示的內容。但是當我這樣做時,沒有任何反應。

// Ellipse object is created when Left Mouse button is release. 
private void _canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
     if (mouseLBDown) 
     { 
      mouseLBDown = false; 

      if (isCreatingEllipse) 
      { 
       _debugLabel.Content = "Done."; 
       isCreatingEllipse = false; 
       loadToTree = true; 
      } 
     } 
    } 

// Suppose to load name of Ellipse as a header, but doesn't. 
private void _circleTree_Loaded(object sender, RoutedEventArgs e) 
    {   
     if (loadToTree) 
     { 
      TreeViewItem item = new TreeViewItem(); 
      item.Header = circle[0].circleName; 
      _circleTree.Items.Add(item); 
      loadToTree = false; 
     } 
    } 

XAML:

<TreeView Name="_boneTree" Background="#404040" Foreground="#E0E0E0" 
      HorizontalAlignment="Left" Height="422" Margin="970,28,0,0" 
      VerticalAlignment="Top" Width="212" Loaded="_circleTree_Loaded"/> 

回答

0

你不應該創建自己的TreeViewItem S,而是設置TreeViewItemsSource,讓WPF構建TreeViewItem給你的。還有一點很容易做到在XAML:

<TreeView Name="_boneTree" Background="#404040" Foreground="#E0E0E0" 
     HorizontalAlignment="Left" Height="422" Margin="970,28,0,0" 
     VerticalAlignment="Top" Width="212" 
     ItemsSource="{Binding Circles}"> 
     <TreeView.Resources> 
      <Style TargetType="TreeViewItem"> 
       <Setter Property="Header" Value="{Binding circleName}"/> 
      </Style> 
     </TreeView.Resources> 
</TreeView> 

凡界是你的DataContext屬性,默認會是你的代碼隱藏:

public ObservableCollection<Circle> Circles { get; set; } 

然後,每當一個Circle添加或刪除它會自動顯示在用戶界面上!

+0

感謝您的回覆。我在使用ObservableCollection時遇到了麻煩。 – SpicyWeenie

+0

有什麼問題,也許顯示一些更多的代碼,你記得在你的構造函數中創建一個新的代碼嗎? – markmnl

+0

這是我的課程。我認爲我對你在談論的事情不以爲然。我的程序仍然做我打算做的事情,但同樣的問題仍然存在。 http://pastebin.com/vLm2vUvs – SpicyWeenie