Несколько вопросов относительно ListBox здесь (на самом деле 3)
1.ListBoxItem / Rectangle Margins
На рисунке я думаю, что поля неравны, слева кажется, что у него больше поля.И это когда мои поля уже установлены на
<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.Как я могу изменить внешний вид выбранного элемента?
Я не хочу этот синий фон, могу ли я просто иметь рамку?
Я попробовал пример из Изменить WPFDataTemplate для элемента ListBox, если он выбран
с этим кодом
<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;
}
Но после этого, когда я пытаюсь выбрать цвета с помощью ползунков, я получаю некоторые странные рывки, а иногда цвет всегда возвращается обратно кцвет, выбранный из списка.Но иногда все работает нормально, я совсем запутался.