我有这个代码用于创建我稍后添加到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
(不包括图像)。有人可以回顾一下我在这里做错了什么。这两种方法都会导致同样的情况。
答案 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。当然,您必须添加正确的绑定功能才能使此代码段编译和工作,否则您的大部分现有代码都可以被抢救。