/ / Entfernen Sie den glasigen Effekt aus den Zeilen in WPF ListView - wpf, xaml, datagrid

Entfernen Sie den glasigen Effekt aus Zeilen in WPF ListView - wpf, xaml, datagrid

Ich versuche, eine ListView in meiner WPF-basiert zu gestaltenAnwendung. Was ich versuche zu tun, ist einen Gradienteneffekt beim Mouseover in Zeilen zu erzeugen. Was ich jedoch nicht will, ist der standardmäßige glasartige Effekt, der den Zeilen hinzugefügt wird. Selbst mit meinem eigenen Styling (unten) ist der glasartige Effekt immer noch vorhanden.

XAML-Stil

<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="#39B4E7" Offset="0"/>
<GradientStop Color="#4297BB" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>

Listenansicht

<ListView Grid.Row="0" ItemsSource="{Binding Projects}" SelectedItem="{Binding CurrentProject}" Margin="3" ItemContainerStyle="{StaticResource ListViewItemContainerStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="" DisplayMemberBinding="{Binding ShortName}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Owner" DisplayMemberBinding="{Binding User.Name}" />
<GridViewColumn Header="Versions" DisplayMemberBinding="{Binding Versions.Count}" />
</GridView>
</ListView.View>
</ListView>

Neuer XAML-Style

<Style x:Key="ListViewItemContainerStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="#39B4E7" Offset="0"/>
<GradientStop Color="#4297BB" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>

Ist das möglich?

Antworten:

1 für die Antwort № 1

Jeder ListViewItem befindet sich in einem Contianer, und dieser Container erhält den Hintergrund für die Auswahl / den Hover. Sie müssen also einen Wert für die einstellen ItemContainerStyle Attribut auf dem ListView.

Beispiel...

<ListView ItemContainerStyle="{StaticResource ListViewItemContainerStyle}" />

der Style..

<Style x:Key="ListViewItemContainerStyle" TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#00000000" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#00000000"/>
</Style.Resources>
</Style>

Bearbeiten: Für Ihren Fall können Sie also alles behalten, indem Sie diesen Stil in Ihrem Fall beibehalten ResourceDictionary und füge das hinzu ItemContainerStyle Attribut auf dem ListView. Hoffe das hilft, lass es mich wissen, wenn du feststeckst.

Das war es, was ich früher gemacht habe, aber es wurde langweilig, also erweiterte ich die ListView Steuerelement, um dies automatisch zu behandeln, und fügte ein Attribut für die Farbe Hover / Auswahl hinzu.

Aktualisierter Code:

<ListView Grid.Row="0" ItemsSource="{Binding Projects}" SelectedItem="{Binding CurrentProject}" Margin="3" ItemContainerStyle="{StaticResource ListViewItemContainerStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="" DisplayMemberBinding="{Binding ShortName}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Owner" DisplayMemberBinding="{Binding User.Name}" />
<GridViewColumn Header="Versions" DisplayMemberBinding="{Binding Versions.Count}" />
</GridView>
</ListView.View>
</ListView>

** Die Ressourcendatei **

<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="#39B4E7" Offset="0"/>
<GradientStop Color="#4297BB" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>

<Style x:Key="ListViewItemContainerStyle" TargetType="{x:Type ListViewItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#00000000" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#00000000"/>
</Style.Resources>
</Style>