Я ответил на аналогичный вопрос час назад, см. Здесь: /5719134/dobavit-usercontrol-v-spisok.
Я приведу наиболее важные части на основе вашего примера
В XAML вам необходимо создать «DataTemplate»это XAML-представление вашего файлового объекта - в вашем случае изображение + имя файла.Вы можете создать этот Dateatemplate в качестве ресурса и назначить его в ComboBox или просто создать его в выпадающем списке, если вы не планируете использовать его повторно
<ComboBox ItemsSource="{Binding Files}">
<ComboBox.ItemTemplate>
<StackPanel>
<Image Source="{Binding FileImage}" Height="16" Width="16"/>
<TextBlock Margin="5" Text="{Binding FileName}" />
</StackPanel>
</ComboBox.ItemTemplate>
</ComboBox>
В вашем Codebehind вам необходимо создать структуру, котораяпредставляет данные, которые вы хотите представить в своем комбинированном списке - скажем, класс FileInfo.Класс FileInfo должен представлять «FileImage» и «FileName» как свойства, чтобы вы могли связываться с ними (как показано выше).Затем вам нужно создать коллекцию таких объектов в коде позади xaml, в который вы помещаете свой ComboBox. Коллекция должна быть ObservableCollection.
Таким образом, вы могли бы получить что-то вроде этого:
public class FileInfo
{
public ImageSource FileImage { get; set; }
public string FileName { get; set; }
}
, а затем в MainWindow.xaml.cs
public ObservableCollection Files {get;приватный набор;} public MainWindow () {InitializeComponent ();this.DataContext = this;Files = new ObservableCollection ();
foreach (string datei in dirFiles)
{
var fName = System.IO.Path.GetFileName(datei);
BitmapImage bitMap = new BitmapImage();
bitMap.BeginInit();
bitMap.UriSource = new Uri(@"tag.jpg", UriKind.Relative);
bitMap.EndInit();
Files.Add(new FileInfo(){FileName=fName, FileImage = bitMap});
}
}
Вам все еще нужно будет прочитать много о , почему это будет работать.Я рекомендую прочитать о DataTemplates DataBinding, ObservableCollection и в конце прочитать о MVVM, шаблоне, который прекрасно связывает все эти вещи и позволяет вам использовать всю мощь WPF и отделять вашу логику от пользовательского интерфейса.