0

次のコードで動的ツリービューを作成しようとしています。ユーザーコントロールを使用しています

制御負荷時

TreeViewItem treeviewItems = new TreeViewItem();
treeviewItems.ItemsSource = TreeViewDataSource.DefaultView;
treeviewItems.ItemTemplate = GetHierarchicalData(ID, Desc);
treeViewCntrl.Items.Add(treeviewItems);

public HierarchicalDataTemplate GetHierarchicalData(string id, string desc)
{
   HierarchicalDataTemplate hierdatatemp = null;
   try
   {
    hierdatatemp = new HierarchicalDataTemplate(typeof(DataTable));
    hierdatatemp.ItemsSource = new Binding(itemSourceBindingName);
    FrameworkElementFactory textBlock = new FrameworkElementFactory(typeof(TextBlock));
    textBlock.SetBinding(TextBlock.TextProperty, new Binding(desc));
    hierdatatemp.VisualTree = textBlock;
    }
    catch (Exception ex)
    {  }
    return hierdatatemp;
 }

このコードを使用してアイテムを追加できますが、正しく追加されていません。最初に空のノードを下に追加し、その後アイテムが追加されます。

私が欲しいのは、空のノードを追加せずにアイテムを追加することです。親ノードをクリックすると、子ノードが追加されます。

親ノードに子ノードを追加するにはどうすればよいですか?

4

2 に答える 2

1
public TreeViewItem CreateTreeViewItem(string nodeName, string headerText, string ImagePath)
{
        TreeViewItem treeViewItem = new TreeViewItem();
        try
        {
            StackPanel stackPanel = new StackPanel();
            Label lblHeaderText = new Label();
            Image imgFrontIcon;
            imgFrontIcon = new Image(); 

            stackPanel.Orientation = Orientation.Horizontal;

            if (ImagePath != null && ImagePath != string.Empty)
            {
                Uri uri = new Uri(@"pack://application:,,," + ImagePath);
                BitmapImage bitMapSource = new BitmapImage();
                bitMapSource.BeginInit();
                bitMapSource.UriSource = uri;
                bitMapSource.EndInit();
                imgFrontIcon.Source = bitMapSource;
            }

            lblHeaderText.Content = headerText;
            stackPanel.Children.Add(imgFrontIcon);
            stackPanel.Children.Add(lblHeaderText);
            nodeName = nodeName.Replace("-", "_");
            treeViewItem.Name = nodeName;
            treeViewItem.Header = stackPanel;
        }
        catch (Exception ex)
        { }
        return treeViewItem
}
于 2013-03-07T05:28:01.567 に答える
0

WPF でツリービューを使用するのは非常に難しいことがわかりました。この記事は非常に役に立ちました:

http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode

于 2013-01-07T05:17:02.217 に答える