HorizontalContentAlignment SelectedItem не растягивается идеально - PullRequest
0 голосов
/ 30 сентября 2010

Я создал собственный стиль в списке в WPF:

        <DataTemplate x:Key="SelectedTemplate">
            <StackPanel Background="#FF4E4E4E" HorizontalAlignment="Stretch">
                <TextBlock Text="{Binding Path=Title}" Foreground="#FFD80000" />
            </StackPanel>
        </DataTemplate>

        <Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
            <Setter Property="ContentTemplate" 
                    Value="{StaticResource ItemTemplate}" />
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="ContentTemplate"
                            Value="{StaticResource SelectedTemplate}" />
                </Trigger>
            </Style.Triggers>
        </Style>

...

    <ListBox 
        Name="lbSongs"
        DockPanel.Dock="Left" 
        ItemsSource="{Binding Path=SongDirectory}"
        SelectedItem="{Binding Path=Song, Mode=TwoWay}"
        Visibility="{Binding Path=ListVisibility}"
        ItemContainerStyle="{StaticResource ContainerStyle}"
        HorizontalContentAlignment="Stretch"
        Width="180px" Background="#FF333333" />

Я пытался создать собственный стиль для выбранного элемента,Чтобы полоса выбора растянулась до ширины ListBox, я установил для свойства ItemContainerStyle HorizontalContentAlignment значение «Растянуть».Проблема в том, что он не растягивается полностью, слева остается крошечная полоса, и там по-прежнему видна оригинальная (синяя) полоса выбора.Смотрите скриншот:

alt text

Как мне сделать так, чтобы он растягивался до полного размера?Или как мне оформить оригинальную панель выбора?

Заранее спасибо.

1 Ответ

1 голос
/ 30 сентября 2010

Просто установите Padding для ListBoxItem на ноль.Эта синяя полоса должна исчезнуть.

 <Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
      <Setter Property="Padding" Value="0"/>
      ...
 </Style>

Другой вариант - просто переписать ControlTemplate для ListBoxItem, чтобы вы могли лучше контролировать его внешний вид.Но да, это не может быть необходимым в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...