2011-11-20 60 views
3

我试图创建一个有一个控制的新树型视图喜欢:将内容添加到一个TreeViewItem编程

<TreeViewItem> 
    <TreeViewItem.Header> 
     <StackPanel> 
      <Button/> 
     </StackPanel> 
    <TreeViewItem.Header> 
<TreeViewItem> 

除此之外,我想在运行时做到这一点(我使用C#) ,但我无法解决如何做到这一点。你能帮我吗?

这是我用来生成节点的代码。在这里的某个地方,我想插入一个数字上/下控制。我还没有那个控制,但是为了争辩,让我们说我想插入一个按钮。

private void TreeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 
    { 
     if (TreeView.SelectedNode != null) 
     { 
      if (((vcvscompiler.DataTypes.dataObjectv)(TreeView.SelectedNode.Tag))._vcardName.re == "adr_work") 
      { 
       foreach (string k in ((vcvscompiler.DataTypes.dataObjectv)(TreeView.SelectedNode.Tag))._prefs) 
       { 
        TreeViewItem newChild = new TreeViewItem(); 
        newChild.Header = k; 
        treeView1.Items.Add(newChild); 
       } 
      } 
     } 
    } 

WPF:

<Window.Resources> 

    <DataTemplate x:Key="myTaskTemplate"> 
     <StackPanel> 
      <Button content="This is a button!" /> 
     </StackPanel> 
    </DataTemplate> 

</Window.Resources> 
+1

你可以把'DataTemplate'在资源? – SLaks

+0

对不起;我以为你在使用'.HeaderTemplate'。 – SLaks

回答

4
new TreeViewItem { 
    Header = new StackPanel { 
     Children = { 
      new Button { ... } 
     } 
    } 
} 
+0

谢谢。这真的帮助:) – user646265

+0

顺便说一句,我如何添加一个事件到新控件。他们似乎没有在上下文中得到认可。 – user646265

+1

如果你想添加一个事件处理程序,你需要分解一个变量,因为你不能在实例初始化程序中添加处理程序。 – SLaks