Не находя это - исключительное событие (т.е. это должно там произойти при нормальных обстоятельствах), то бросьте. Иначе возвратитесь, "не найденное" значение (может быть пустым, но не имеет к), или даже имейте возврат метода булевская переменная для найденного/незнакомого и параметр для фактического объекта.
Если у вас установлен Windows SDK, вы можете найти исходный код XAML для всех стилей по умолчанию (при условии, что вы установили образцы) в:
% ProgramFiles% \ Microsoft SDKs \ Windows \ v6.1 \ Samples \ WPFSamples.zip
ZIP-файл содержит папку Core, которая содержит AeroTheme, LunaTheme и т. Д., Которые содержат исходные коды стилей по умолчанию. К сожалению, эти файлы довольно большие (~ 8500 строк для Aero) и не очень хорошо структурированы или отформатированы (IMO).
Шаблон управления по умолчанию для ListViewItem выглядит так:
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border CornerRadius="2" SnapsToDevicePixels="True"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<Border Name="InnerBorder" CornerRadius="1" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition MaxHeight="11" />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="UpperHighlight" Visibility="Collapsed" Fill="#75FFFFFF" />
<GridViewRowPresenter Grid.RowSpan="2"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource ListItemHoverFill}" />
<Setter Property="BorderBrush" Value="#FFCCF0FF" />
<Setter TargetName="UpperHighlight" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource ListItemSelectedFill}" />
<Setter Property="BorderBrush" Value="#FF98DDFB" />
<Setter TargetName="InnerBorder" Property="BorderBrush" Value="#80FFFFFF" />
<Setter TargetName="UpperHighlight" Property="Visibility" Value="Visible" />
<Setter TargetName="UpperHighlight" Property="Fill" Value="#40FFFFFF" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True" />
<Condition Property="Selector.IsSelectionActive" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource ListItemSelectedInactiveFill}" />
<Setter Property="BorderBrush" Value="#FFCFCFCF" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource ListItemSelectedHoverFill}" />
<Setter Property="BorderBrush" Value="#FF98DDFB" />
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Лучше всего удалить все выделения, вероятно, чтобы заменить ControlTemplate вашим собственным, который просто включает GridViewRowPresenter (возможно, в одной границе). Не забудьте включить триггер, который закрашивает элементы серым, когда управление отключено.
Я не стою перед ПК с Windows, чтобы проверить это прямо сейчас, но у меня была аналогичная проблема со списками, которую я исправил, поместив следующее в свой Window.Resources
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
Не уверен, что это будет работать с вашим списком.
Используя ваш код, я вообще не вижу ни одной строки. Какая у вас тема по умолчанию прямо сейчас? Луна, Аэро и т. Д.? Может быть, ваш отличается от моего, поэтому разница в хроме. Есть ли какие-либо другие настройки в вашем ListView
?
Style Snooper или Show Me The Template могут помочь вам отследить визуальный элемент, отвечающий за строку, которую вы видя. Вас также может заинтересовать повторный шаблон вашего ListView
для получения желаемого эффекта.