Несколько вопросов относительно ListBox здесь (3) на самом делеListBox/Прямоугольник Поле, Изменение Look выбранного элемента, Связующее для выбранного элемента
1. ListBoxItem/Полей Прямоугольника
С изображение, я думаю, что поля неровные, слева кажется, что у него больше поля. И это, когда мои поля уже установлено в
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Width="20" Height="20" Margin="1,2,2,2">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}" />
</Rectangle.Fill>
</Rectangle>
</DataTemplate>
</ListBox.ItemTemplate>
2. Как я могу изменить выбранный элемент Посмотрите?
Мне не нужен этот синий фон, могу ли я просто иметь границу?
Я попробовал пример из Change WPF DataTemplate for ListBox item if selected
с этим кодом
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Rectangle Width="20" Height="20" Margin="1,2,3,2">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}" />
</Rectangle.Fill>
</Rectangle>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Border BorderBrush="DarkGray" BorderThickness="1">
<Rectangle Width="20" Height="20" Margin="1,2,3,2">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}" />
</Rectangle.Fill>
</Rectangle>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
и получил что-то вроде
3. Связывание для выбранного элемента
Я пытаюсь привязать выбранный цвет к свойству модели представления. Если цвет в модели просмотра не существует в списке цветов, цвет не должен быть выбран. Подумайте об этом как альтернативном способе выбора цвета, у меня есть выбор цветов с помощью ползунков RGB/HSB. Я попытался
<ListBox ItemsSource="{Binding ThemeColors}" SelectedValue="{Binding Color}" SelectionChanged="ListBox_SelectionChanged" ...
затем в C#
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listBox = (ListBox)sender;
if (listBox.SelectedValue != null)
Color = (Color)listBox.SelectedValue;
}
Но после того, когда я пытаюсь выбрать цвета с ползунками, я получаю некоторые странные подергивания, а иногда и цвет всегда щелкнет назад к цвету выбранного из в поле списка. Но иногда это прекрасно работает, я довольно смущен.