【发布时间】:2013-06-02 00:01:11
【问题描述】:
我有这段代码用于创建TreeViewitems,稍后我将其添加到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:
<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(不包括图像)。有人可以在这里查看我做错了什么。两种方法都会导致相同的情况。
【问题讨论】:
标签: .net wpf treeview treeviewitem