На самом деле вам не нужно определять кисти.
Я бы определил класс для представления ваших фруктов следующим образом:
public class Fruits
{
public string Fruit { get; set; }
public Color Color { get; set; }
public string ColorStr { get { return Color.ToString(); } }
public Fruits(string fruit, Color color)
{
Fruit = fruit;
Color = color;
}
}
Класс Color
- это класс System.Windows.Media.Color
. Когда вы делаете связывание в XAML
, связывание со строкой Hex
, которая представляет цвет, работает, и Color.ToString()
делает именно это.
Так что теперь у меня есть список вашего Fruits
класса:
public partial class MainWindow : Window
{
public List<Fruits> FruitList { get; set; }
public MainWindow()
{
InitializeComponent();
FruitList = new List<Fruits>()
{
new Fruits("Apple", Colors.Red),
new Fruits("Pear", Colors.Green),
new Fruits("Grape", Colors.Purple)
};
cboColors.ItemsSource = FruitList;
}
}
Установите ComboBox.ItemsSource
в наш список, как показано выше.
А ваши ComboBox
привязки должны выглядеть так:
<ComboBox x:Name="cboColors" HorizontalAlignment="Center" Margin="0,20,0,0"
VerticalAlignment="Top" Width="100" Height="22">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Background="{Binding ColorStr}" Height="12" Width="12" Margin="2"/>
<TextBlock Grid.Column="1" Margin="5,0" VerticalAlignment="Center" Text="{Binding Fruit}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Окончательный вывод:
![enter image description here](https://i.stack.imgur.com/8wbub.png)
EDIT
Получение выбранного предмета. На данный момент ваш ComboBox.ItemsSource
связан с вашим FruitList
списком. Поэтому всякий раз, когда пользователь выбирает элемент из раскрывающегося списка, выбирается объект типа Fruist
.
Поэтому, если вы хотите выбрать предмет, вы можете, например, использовать событие ComboBox_SelectionChanged
и привести ComboBox.SelectedItem
к типу Fruits
.
private void CboColors_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Casting the selected item to type Fruits
var selected = (Fruits)cboColors.SelectedItem;
// Here I'm setting window title to the selected fruit to illustrate.
// You can use this however you like.
this.Title = selected.Fruit;
}
Я думаю, что для вас будет хорошей идеей погрузиться в мир DataBinding
и изучить основы.
Это и , это может быть хорошей отправной точкой.