ListBoxItem IsSelected стиль - PullRequest
       20

ListBoxItem IsSelected стиль

3 голосов
/ 07 апреля 2010

Я до сих пор не понял. Не могли бы вы показать мне, как именно переопределить поведение по умолчанию ListBox. Каждый раз, когда выбирается ListBoxItem, фон границы должен меняться. Не фон всей строки, а только фон указанной границы.

 <ListBox ItemsSource="{Binding Source={StaticResource AssetsViewSource}}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="2" BorderBrush="Black">
                    <StackPanel>
                        <TextBlock Text="Name: " />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Ответы [ 2 ]

11 голосов
/ 07 апреля 2010

Используйте коллекцию триггеров DataTemplate с RelativeSource, чтобы получить доступ к содержащему ListBoxItem:

<DataTemplate>
  <Border BorderThickness="2" BorderBrush="Black" Name="Bd">
    <StackPanel>
      <TextBlock Text="Name: " />
      <TextBlock Text="{Binding Name}" />
    </StackPanel>
  </Border>
  <DataTemplate.Triggers>
    <DataTrigger Value="True"
                 Binding="{Binding 
                              IsSelected, 
                              RelativeSource={RelativeSource 
                                  AncestorType={x:Type ListBoxItem}}}">
      <!-- everybody loves HotPink -->
      <Setter TargetName="Bd" Property="Background" Value="HotPink"/>  
    </DataTrigger>
  </DataTemplate.Triggers>
</DataTemplate>
2 голосов
/ 16 августа 2010

Просто добавьте следующее в тег ListBox Item

<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
</ListBox.Resources>

Это должно сработать ..

...