gpt4 book ai didi

c# - 将图标添加到 TreeViewItem

转载 作者:行者123 更新时间:2023-11-30 13:27:14 24 4
gpt4 key购买 nike

我被要求更新 WPF 应用程序中的 TreeVeiw,该应用程序是从类对象动态构建的。正如您将看到的,treeveiw 不受任何约束。以下不是我的代码!!

<TreeView Grid.Row="0" HorizontalAlignment="Stretch" Name="tvLocations" VerticalAlignment="Stretch" SelectedItemChanged="tvLocations_SelectedItemChanged" />

    private void BuildTreeVeiw(Location locationList)
{
this.Title = _selectedLoc.Name + " - Locations";
tvLocations.Items.Clear();

TreeViewItem tvitem;

tvitem = new TreeViewItem() { Header = locationList.Name, Uid = locationList.Id.ToString() };

if (locationList.Printers != null)
{
TreeViewItem tvprnitem = new TreeViewItem() { Header = "Printers" };
tvprnitem.FontWeight = FontWeights.Regular;

foreach (Printer sprinters in locationList.Printers)
{
TreeViewItem psubitem = new TreeViewItem() { Header = sprinters.Name, Uid = sprinters.Id.ToString() };
TreeViewItem psubitem1 = new TreeViewItem() { Header = String.Concat("UNC: ", sprinters.UNC) };
psubitem.Items.Add(psubitem1);
tvprnitem.Items.Add(psubitem);
}
tvitem.Items.Add(tvprnitem);
}

foreach (Location loc in locationList.Children)
{
AddChildren(loc, ref tvitem);
}
tvLocations.Items.Add(tvitem);
}

private void AddChildren(Location child, ref TreeViewItem tvi)
{
TreeViewItem tvitem;

tvitem = new TreeViewItem() { Header = child.Name, Uid = child.Id.ToString() };
if (child.Name == _currentLocation.Name)
{
tvitem.FontWeight = FontWeights.Bold;
}

if (child.Printers != null)
{
TreeViewItem tvprnitem = new TreeViewItem() { Header = "Printers" };
tvprnitem.FontWeight = FontWeights.Regular;

foreach (Printer sprinters in child.Printers)
{
TreeViewItem psubitem = new TreeViewItem() { Header = sprinters.Name, Uid = sprinters.Id.ToString() };
TreeViewItem psubitem1 = new TreeViewItem() { Header = String.Concat("UNC: ", sprinters.UNC) };
psubitem.Items.Add(psubitem1);
tvprnitem.Items.Add(psubitem);
}
tvitem.Items.Add(tvprnitem);
}
if (child.Children != null)
{
foreach (Location loc in child.Children)
{
AddChildren(loc, ref tvitem);
}
}

tvi.Items.Add(tvitem);

}

这正确地构建了树,我被要求做的就是向 TreeViewItem 添加一个图标。该图标将根据它是一个位置还是该位置内的打印机而有所不同。

我看不到如何将图标添加到 TreeViewItems 谁能指出我正确的方向?

最佳答案

我通过更改这一行解决了这个问题

tvitem = new TreeViewItem() { Header = child.Name, Uid = child.Id.ToString() };

tvitem = GetTreeView(child.Id.ToString(), child.Name, "location.png");

添加这个函数

    private TreeViewItem GetTreeView(string uid, string text, string imagePath)
{
TreeViewItem item = new TreeViewItem();
item.Uid = uid;
item.IsExpanded = false;

// create stack panel
StackPanel stack = new StackPanel();
stack.Orientation = Orientation.Horizontal;

// create Image
Image image = new Image();
image.Source = new BitmapImage
(new Uri("pack://application:,,/Images/" + imagePath));
image.Width = 16;
image.Height = 16;
// Label
Label lbl = new Label();
lbl.Content = text;


// Add into stack
stack.Children.Add(image);
stack.Children.Add(lbl);

// assign stack to header
item.Header = stack;
return item;
}

完美运行。

关于c# - 将图标添加到 TreeViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com