我有这个代码来创建TreeViewitems
,我后来将其添加到TreeView
。这全部以编程方式完成。Treeviewitem以编程方式与图像
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
:
<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>
而不是增加TVI像早期的,我这样做:
// 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;
}
}
}
即使我使用这种方法,我看到TreeViewItems
的名称为DeveloperTool
。 TreeItem
而不是我绑定的实际名称。为了简单起见,我只是先尝试了TextBlock
(不包括图片)。有人可以请回顾一下我在这里做错了什么。两种方法都会导致同样的情况。
所以我应该摆脱itemtemplate并在资源中使用它呢? –
是的,我发布的Xaml设置了HeaderTemplate属性,这就是你基于你发布的代码和Xaml之后的内容。 –
谢谢。这是做了它。我有更多的问题让我的工作,但它可能是一个好主意,发布有关它的另一个问题。 –