Я новичок в земле WPF и у меня следующий вопрос относительно привязки данных.
Мое тестовое приложение содержит ListView с автомобилями (столбцы: тип, скорость и цвет). Под списком есть несколько элементов управления для выбора значений выбранного автомобиля. Среди прочего есть ComboBox для выбора цвета выбранного автомобиля.
Мое тестовое приложение выглядит следующим образом
В XAML ListView инициализируется следующим образом:
<ListView Grid.Row="1" Name="listView" ItemsSource="{Binding Model.Cars}" SelectedValue="{Binding Model.SelectedCar}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Type" Width="Auto" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Speed" Width="Auto" DisplayMemberBinding="{Binding Speed}" />
<GridViewColumn Header="Color" Width="Auto"
DisplayMemberBinding="{Binding Color.Value}"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
ItemsSource - Model.Cars, который представляет собой ObservableCollection объектов Car.
Car.Color - это KeyValuePair (Color, string), который инициализируется с помощью AvailableColors класса CarColors:
public static class CarColors
{
static Random rnd = new Random();
private static Dictionary<Color, string> availableColors = new Dictionary<Color, string>
{
{ Colors.Red, "red" },
{ Colors.Green, "green" },
{ Colors.Blue, "blue" },
{ Colors.Yellow, "yellow" },
{ Colors.Brown, "brown" },
{ Colors.Silver, "silver" },
};
public static Dictionary<Color, string> GetAvailableColors()
{
return availableColors;
}
public static KeyValuePair<Color, string> GetRandomColor()
{
return availableColors.ElementAt(rnd.Next(0, availableColors.Count));
}
}
Я хочу, чтобы данные связывали Color ComboBox с цветом выбранного автомобиля в ListView. Мой текущий код XAML не работает:
<ComboBox Grid.Row="1" Grid.Column="1" Margin="2"
ItemsSource="{Binding Source={StaticResource AvailableColors}}"
SelectedValuePath="Key"
DisplayMemberPath="Value"
SelectedValue="{Binding ElementName=listView, Path=SelectedValue}"/>
Как я могу привязать данные к Color ComboBox, чтобы он представлял цвет выбранного автомобиля, но беря его диапазон значений из статического словаря CarColors?