WPF C# 在运行时将文本和图像添加到 ComboBox

Posted

技术标签:

【中文标题】WPF C# 在运行时将文本和图像添加到 ComboBox【英文标题】:WPF C# add text and image to ComboBox during runtime 【发布时间】:2021-02-20 09:04:58 【问题描述】:

基本上,当用户单击按钮时,我想在ComboBox 中添加当前正在运行的应用程序的名称列表以及它们旁边的图标。我知道如何获取应用程序列表和图标,但不确定如何将所有内容链接在一起。我的ComboBox XAML 目前如下所示:

<ComboBox x:Name="dial1AppSelection" Grid.Column="3" Grid.Row="4" MinHeight="25" Height ="25" MaxHeight="35" MinWidth="120" Margin="4,0,0,0" SelectionChanged="dial1AppSelection_SelectionChanged">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Height="20" Source="???" />
                <TextBlock ><Run Text="???" /></TextBlock>
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

【问题讨论】:

【参考方案1】:
    添加到您的组合框
    ItemsSource="Binding YourCollection"
    为您的对象创建类:
    public class MyProcess
    
        public ImageSource Image  get; set; 
        public string Text  get; set;  
    
    将此类代码添加到您的 MainWindow.xaml.cs
    public ObservableCollection<MyProcess> YourCollection  get; set; 
    public MainWindow()
    
        InitializeComponent();
    
        YourCollection = new ObservableCollection<MyProcess>();
        YourCollection.Add(new MyProcess()  Image ="image1", Text = "txt1");
    
        DataContext = this;
    
    在您的 xaml 代码中插入字段名称:
    Source="Binding Path=Image"

    Text="Binding Path=Text"

【讨论】:

如果 Image var 是位图类型,Image 应该是位图而不是字符串? 这个实现非常适合我。唯一的补充是将我的 bmps 转换为 ImageSource 类型。谢谢!

以上是关于WPF C# 在运行时将文本和图像添加到 ComboBox的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时将图像加载到 WPF?

动态数据显示 - WPF - 需要将文本添加到画布 - C#

是否可以(以及如何)在 C# 运行时将 ConnectionString 添加到 app.config?

在运行时将新表重新加载/替换到 WPF DataGrid 中

C# Wpf 在运行时嵌入图像

使用 WPF、Caliburn 和 C# 从图像转换为图像源