Treeviewitem以编程方式提供图像

时间:2013-06-02 00:01:11

标签: .net wpf treeview treeviewitem

我有这个代码用于创建我稍后添加到TreeViewitems的{​​{1}}。这都是以编程方式完成的。

TreeView

我希望能够以编程方式将图像添加为TreeViewItem tvi = new TreeViewItem { Header = ni.name, Uid = itemName, Background = color }; 的图标。我这样做但是我在TreeViewItems中看到的只是名为TreeView的项目很奇怪。此外,没有显示图像。我在我的代码中使用它。请帮忙:

System.Windows.Controls.StackPanel

我也尝试了TreeViewItem tvi = new TreeViewItem { Header = new System.Windows.Controls.StackPanel { Children = { new System.Windows.Controls.Image{Source = b}, new System.Windows.Controls.TextBlock { Text = ni.name } } }, Uid = itemName, Background = color }; 方法。我的XAML based方法如下所示 XAML based

XAML

不是像之前那样添加tvi,而是执行此操作:

<TreeView ItemsSource="{Binding}" Grid.Row="1" Grid.Column="0" Name="TreeView1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TreeViewItem.Selected="TreeViewItem_OnItemSelected">
    <TreeView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path= iName}" Margin="5,0" />    
            </StackPanel>
        </DataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

我的// node.Items.Add(tvi); //for non-xaml approach var ti = new TreeItem { iName = ni.name}; node.Items.Add(ti); 课程如下:

TreeItem

即使我使用这种方法,我也会看到名为namespace DeveloperTool { public class TreeItem { public string iName { get; set; } } } 的{​​{1}}。 TreeViewItems而不是我绑定的实际名称。为简单起见,我首先尝试使用DeveloperTool(不包括图像)。有人可以回顾一下我在这里做错了什么。这两种方法都会导致同样的情况。

1 个答案:

答案 0 :(得分:1)

基于样本的问题是需要标题模板。将此代码段添加到TreeView声明...

        <TreeView.Resources>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Image  Margin="2"  Source="{Binding ...}"/>
                                <TextBlock Text="{Binding}"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TreeView.Resources>

这为您提供了一个可以绑定的HeaderTemplate。当然,您必须添加正确的绑定功能才能使此代码段编译和工作,否则您的大部分现有代码都可以被抢救。