gpt4 book ai didi

.net - 在运行时向 WPF TreeViewItem 添加图标

转载 作者:行者123 更新时间:2023-12-04 06:40:23 31 4
gpt4 key购买 nike

XAML 中有许多示例演示了这一点,例如:

<TreeViewItem>
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="..."/>
<TextBlock>Hello</TextBlock>
</StackPanel>
</TreeViewItem.Header>

</TreeViewItem>

但是我需要在运行时代码中执行此操作 - TreeView 的目的是在计算机上显示文件和文件夹。

所以我不确定如何在代码中使用 Header:
 For Each f In directory.GetFiles()

Dim icon = System.Drawing.Icon.ExtractAssociatedIcon(f.FullName)
Dim name As String = f.Name

Dim item As New TreeViewItem
item.Header = ...


Next

任何人都可以演示这个概念吗?

编辑:我想我明白了,我应该使用带有两个单独控件的水平 StackPanel - TextBlock 和 Image。这是正确的方法吗?

最佳答案

.

这是关于您应该如何开始的示例代码。首先了解这一点,然后进行适当的更改以满足您的需要。用 C# 和 XAML 编写的代码。希望您能理解 C# 并能够将其转换为 Basic。

    public class NameIconPair
{
public String Name { get; set; }
public BitmapSource IconSource { get; set; }
}

public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();

var files = System.IO.Directory.GetFiles("E:\\");
ObservableCollection<NameIconPair> pairs = new ObservableCollection<NameIconPair>();
foreach (string file in files)
{
System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(file);
Stream stream = new MemoryStream();
icon.Save(stream);
BitmapDecoder decoder = IconBitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
BitmapSource src = decoder.Frames[0];
pairs.Add(new NameIconPair() { Name = file, IconSource = src });
}
this.DataContext = pairs;
}
}

这是 XAML 代码:
    <TreeView ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding IconSource}"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>

希望这个示例代码对你有很大帮助。 :-)

.

关于.net - 在运行时向 WPF TreeViewItem 添加图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327725/

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