У меня есть ListBox, который использует DataTemplate для рендеринга элементов данных. XAML для таблицы данных выглядит следующим образом:
<DataTemplate x:Key="NameResultTemplate">
<WrapPanel x:Name="PersonResultWrapper" Margin="0" Orientation="Vertical" Background="{Binding Converter={StaticResource NameResultToColor}, Mode=OneWay}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<cmd:EventToCommand x:Name="SelectPersonEventCommand" Command="{Binding Search.SelectedPersonCommand, Mode=OneWay, Source={StaticResource Locator}}" CommandParameter="{Binding Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TextBlock x:Name="txtPersonName" TextWrapping="Wrap" Margin="0" VerticalAlignment="Top" Text="{Binding PersonName}" FontSize="24" Foreground="Black" />
<TextBlock x:Name="txtAgencyName" TextWrapping="Wrap" Text="{Binding AgencyName}" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0" FontStyle="Italic" Foreground="Black" />
<TextBlock x:Name="txtPIDORI" TextWrapping="Wrap" Text="{Binding PIDORI}" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0" FontStyle="Italic" Foreground="Black" />
<TextBlock x:Name="txtDescriptors" TextWrapping="Wrap" Text="{Binding DisplayDescriptors}" Margin="0" VerticalAlignment="Top" Foreground="Black"/>
<Separator Margin="0" Width="400" />
</WrapPanel>
</DataTemplate>
Обратите внимание, что существует преобразователь значений с именем NameResultToColor, который меняет кисть фона отрисованной панели WrapPanel на кисть градиента в зависимости от определенных сценариев.
Все это работает так, как я ожидал, за исключением тех случаев, когда вы нажимаете на любой из визуализированных элементов ListBox. Если щелкнуть один из них, появляется только малейший признак цвета выделения (синий цвет по умолчанию). Я могу видеть его след под моим предметом с градиентной кистью. Если я переустановил кисть фона на «без кисти», то рендеринг выделения будет работать правильно. Если я установлю кисть фона на сплошной цвет, она также не будет отображаться так, как я ожидаю.
Как я могу получить выделение цвета, чтобы быть на вершине? Что превосходит выделение рендеринга?