WPF C # добавляет текст и изображение в поле со списком во время выполнения

#c# #wpf #xaml #combobox

#c# #wpf #xaml #поле со списком

Вопрос:

В принципе, когда пользователь нажимает кнопку, я хотел бы добавить список имен запущенных в данный момент приложений с их значком рядом с ними в пределах ComboBox . Я знаю, как получить мой список приложений и мои значки, но не уверен, как связать все вместе. Мой XAML для ComboBox текущего выглядит следующим образом:

 <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:

  1. Добавить в свой список со списком
     ItemsSource="{Binding YourCollection}"
  
  1. Создайте класс для своих объектов:
     public class MyProcess
    {
        public ImageSource Image { get; set; }
        public string Text { get; set; } 
    }
  
  1. Добавьте такой код в свой 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;
    }
  
  1. Вставьте имена полей в свой код xaml:
     Source="{Binding Path=Image}"

    Text="{Binding Path=Text}"
  

Комментарии:

1. Если переменная изображения имеет тип bitmap, должно ли изображение быть растровым изображением, а не строкой?

2. Эта реализация отлично сработала для меня. Единственным дополнением было преобразование моих bmp в тип ImageSource. Спасибо!