Я создаю ListView во время выполнения и постоянно его заполняю. Проблема в том, что я хочу отключить изменение цвета при наведении курсора на элемент или его выборе.
Каждый ListViewItem не фокусируется. Таким образом, изменение цвета не сохраняется и отображается только при наведении курсора на элемент. Я попытался отключить это, создав свой единственный стиль, но, к сожалению, это не сработало, как я надеялся.
Я использовал этот стиль
Setter setter = new Setter()
{
Property = Control.BackgroundProperty,
Value = null
};
Setter setter1 = new Setter()
{
Property = Control.BorderBrushProperty,
Value = null
};
Trigger trigger = new Trigger()
{
Property = ListBoxItem.IsSelectedProperty,
Value = true,
Setters = { setter, setter1 }
};
Style style = new Style()
{
Triggers = { trigger }
};
Я также попытался установить для ListView.FocusVisualStyle значение null, но у меня также не было результатов.
Я бы предложил использовать Transparent вместо null в качестве значения.
Параметр @irategenius включен = false также отключает функцию прокрутки
@GaurangDave, где мне применить стиль. Я пробовал ListViewItem.FocusVisualStyle, ListView.ItemContainerStyle и ListView.FoucsVisualStyle. Ни один из них ничего не изменил





Ну есть 2 варианта
1) если вам не нужно выбирать элементы: установите для IsHitTestVisible значение false
2) сделать свой собственный стиль
<!--Default LitsView-->
<Style TargetType = "ListView">
<Setter Property = "Background" Value = "{StaticResource YOUR_BACKGROUND_COLOR}"/>
</Style>
<!--Default LitsViewItem-->
<Style x:Key = "FocusVisual">
<Setter Property = "Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin = "2" SnapsToDevicePixels = "true" Stroke = "{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness = "1" StrokeDashArray = "1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType = "{x:Type ListViewItem}">
<Setter Property = "SnapsToDevicePixels" Value = "True"/>
<Setter Property = "Padding" Value = "4,1"/>
<Setter Property = "HorizontalContentAlignment" Value = "{Binding HorizontalContentAlignment, RelativeSource = {RelativeSource AncestorType = {x:Type ItemsControl}}}"/>
<Setter Property = "VerticalContentAlignment" Value = "{Binding VerticalContentAlignment, RelativeSource = {RelativeSource AncestorType = {x:Type ItemsControl}}}"/>
<Setter Property = "Background" Value = "Transparent"/>
<Setter Property = "BorderBrush" Value = "Transparent"/>
<Setter Property = "BorderThickness" Value = "1"/>
<Setter Property = "FocusVisualStyle" Value = "{StaticResource FocusVisual}"/>
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "{x:Type ListViewItem}">
<Border x:Name = "Bd" BorderBrush = "{TemplateBinding BorderBrush}" BorderThickness = "{TemplateBinding BorderThickness}" Background = "{TemplateBinding Background}" Padding = "{TemplateBinding Padding}" SnapsToDevicePixels = "true">
<ContentPresenter HorizontalAlignment = "{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels = "{TemplateBinding SnapsToDevicePixels}" VerticalAlignment = "{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property = "IsMouseOver" Value = "True"/>
</MultiTrigger.Conditions>
<Setter Property = "Background" TargetName = "Bd">
<Setter.Value>
<SolidColorBrush Color = "{StaticResource YOUR_COLOR}" Opacity = "0.3"/>
</Setter.Value>
</Setter>
<Setter Property = "BorderBrush" TargetName = "Bd" Value = "{StaticResource YOUR_COLOR}"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property = "Selector.IsSelectionActive" Value = "True"/>
<Condition Property = "IsSelected" Value = "True"/>
</MultiTrigger.Conditions>
<Setter Property = "Background" TargetName = "Bd" Value = "{StaticResource YOUR_COLOR}"/>
<Setter Property = "BorderBrush" TargetName = "Bd" Value = "{StaticResource YOUR_COLOR}"/>
</MultiTrigger>
<Trigger Property = "IsEnabled" Value = "False">
<Setter Property = "TextElement.Foreground" TargetName = "Bd" Value = "{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
просто установка IsHitTestVisible=false работает для меня. Спасибо
@CaptainLama, вы можете использовать xaml в RunTime, просто сделайте это в своем коде smt.Style = Application.Current.FindResource("YOUR_STYLE_KEY") as Style
Попробуйте это в своем коде xaml...
<ListView ...>
<ListView.ItemContainerStyle>
<Style TargetType = "{x:Type ListViewItem}">
<Setter Property = "HorizontalAlignment" Value = "Left"/>
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "{x:Type ListViewItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Я не могу использовать xaml, потому что все генерируется во время выполнения.
вы можете установить Enabled=false для просмотра списка