2015-06-06 1 views
1

Я хотел бы добавить разные изображения рядом с каждым элементом в элементе combobox itemssource. Вот что я имею в данный момент.Как я могу добавить разные изображения в combobox itemssource array

<ComboBox x:Name="cmb" HorizontalAlignment="Left" Width="135" Height="22" 
      SelectedItem="{Binding myViewMode}" Margin="5,0,0,0"> 
      <ComboBox.ItemsSource> 
       <x:Array Type="sys:String" xmlns:sys="clr-namespace:System;assembly=mscorlib">                 
        <sys:String>Oranges</sys:String> 
        <sys:String>Mangoes</sys:String> 
       </x:Array> 
      </ComboBox.ItemsSource>               
</ComboBox> 

Как добавить два разных изображения с помощью элемента itemmemplate. Благодаря

Редактировать Один

Это то, что я пытался с ItemTemplate

<ComboBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="{Binding OrangesImage}" Height="100"/> 
<Image Source="{Binding MangoesImage}" /> 
         </StackPanel> 
        </DataTemplate> 
     </ComboBox.ItemTemplate> 

Это здесь, что я действительно застрял.

+0

Видимо, вы уже знаете ответ : использование шаблона элемента. что ты уже испробовал? – Kryptos

+0

Когда я использую itemtemplate, он отображает изображения без текста – capdiz

+0

У вас есть этот тег [tag: mvvm] на ваш вопрос, но вы, кажется, не знаете, что это значит. Я бы предложил сделать перерыв в кодировании, чтобы узнать его. Не должно занимать больше пары часов. Много ссылок. Посетите свою любимую поисковую систему. – Will

ответ

2

В данный момент ваш шаблон содержит только два изображения, поэтому вы увидите два изображения и текст для каждого элемента!

Я предлагаю вам изменить свой ItemSource на код, чтобы вы могли иметь текст и свойства изображения.

Сначала сделайте простой класс фрукты:

public class Fruit 
{ 
    public string FruitName { get; set; } 
    public string FruitImage { get; set; } 
} 

Затем создать список этих фруктов и установить ItemsSource вашего комбинированного окна в этот список:

var fruits = new List<Fruit>(); 

fruits.Add(new Fruit() { FruitName = "Mangos", FruitImage = @"C:\mangoimage.jpg" }); 
fruits.Add(new Fruit() { FruitName = "Oranges", FruitImage = @"C:\mangoimage.jpg" }); 

cmb.ItemsSource = fruits; 

Затем упростить XAML следующим образом:

<ComboBox x:Name="cmb" HorizontalAlignment="Left" Width="135" Height="22" SelectedItem="{Binding myViewMode}" Margin="5,0,0,0">  
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding FruitName}"/> 
       <Image Source="{Binding FruitImage}" Height="100"/>       
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
1

В вашем ItemSource ваше изображение должно состоять из пути Uri с классом BitMapImage то только Изображения принимаются в ItemTemplate в ComboBox

Xaml код

<ComboBox x:Name="cmb" HorizontalAlignment="Left" Width="135" Height="22" 
     SelectedItem="{Binding myViewMode}" Margin="5,0,0,0"> 
    <ComboBox.ItemTemplate> 
      <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <Image Width="25" Height="25" Source="{Binding FruitName}"/>    
     </StackPanel> 
    </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Ваш класс Модель

public class Fruit 
{ 
public string FruitName { get; set; } 
} 

Ваш ItemSource должен состоять как:

fruitCollection.Add(new Fruit() {FruitName= new BitmapImage(new Uri("C:\mangoimage.jpg", UriKind.Relative))}); 
Смежные вопросы