#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:
- Добавить в свой список со списком
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}"
Комментарии:
1. Если переменная изображения имеет тип bitmap, должно ли изображение быть растровым изображением, а не строкой?
2. Эта реализация отлично сработала для меня. Единственным дополнением было преобразование моих bmp в тип ImageSource. Спасибо!