Wpf `ListView“鼠标悬停”定义为“透明”,但显示2种颜色
我的Wpf `ListView“鼠标悬停”定义为“透明”,但显示2种颜色,wpf,listview,styles,Wpf,Listview,Styles,我的列表视图鼠标悬停定义为透明,但结果是一半透明: 与选定的相同: 定义蓝色,但有两种颜色 为什么呢 编辑 <ListView Name="llistview" Background="Transparent" BorderThickness="0,1,0,0" ItemsSource="{Binding collection}" MouseDoubleClick="llistview_MouseDoubleClick" Mouse
列表视图
鼠标悬停
定义为透明
,但结果是一半透明
:
与选定的相同
:
定义蓝色,但有两种颜色
为什么呢
- 编辑
<ListView Name="llistview" Background="Transparent" BorderThickness="0,1,0,0" ItemsSource="{Binding collection}" MouseDoubleClick="llistview_MouseDoubleClick" MouseLeftButtonDown="llistview_MouseLeftButtonDown" Margin="0,176,0,166" BorderBrush="Gainsboro" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <Setter Property="Foreground" Value="Gainsboro"/> <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="Background" Value="Transparent"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="Height" Value="20" /> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True"/> </MultiTrigger.Conditions> <Setter Property="Foreground" Value="White"></Setter> <Setter Property="Background" Value="Transparent"/> <Setter Property="BorderBrush" Value="White"/> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="Selector.IsSelectionActive" Value="False"/> <Condition Property="IsSelected" Value="True"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="#FF15669E"/> <Setter Property="Foreground" Value="White"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="BorderThickness" Value="0"/> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="Selector.IsSelectionActive" Value="True"/> <Condition Property="IsSelected" Value="True"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="#FF15669E"/> <Setter Property="Foreground" Value="White"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="BorderThickness" Value="1"/> </MultiTrigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> </Trigger> </Style.Triggers> </Style> </ListView.ItemContainerStyle> <ListView.Resources> <DataTemplate x:Key="MyDataTemplate"> <Grid Margin="-6"> <ProgressBar Name="progressBarColumn" Maximum="100" Value="{Binding Progress, UpdateSourceTrigger=PropertyChanged}" Width="{Binding Path=Width, ElementName=ProgressCell}" Height="18" Margin="0" Background="Gainsboro" Style="{StaticResource CustomProgressBar}" /> <TextBlock Text="{Binding Path=Value, ElementName=progressBarColumn, StringFormat={}{0}%}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="11" Foreground="White" /> </Grid> </DataTemplate> <DataTemplate x:Key="MyDataTemplate2"> <Grid Margin="-6" > <Slider Name="sliderColumn" HorizontalAlignment="Left" VerticalAlignment="Center" TickPlacement="None" Minimum="0" Maximum="50" Value="1" Style="{StaticResource SliderStyle}" Width="80" TickFrequency="1" IsSnapToTickEnabled="True"/> <TextBlock Text="{Binding Path=Value, ElementName=sliderColumn, StringFormat={}x{0}}" FontSize="11" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Right"/> </Grid> </DataTemplate> <ControlTemplate x:Key="ProgressBarTemplate"> <Label HorizontalAlignment="Center" VerticalAlignment="Center" /> </ControlTemplate> <Style TargetType="{x:Type TextBlock}"> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text }"></Setter> </Style> </ListView.Resources> <ListView.View> <GridView ColumnHeaderContainerStyle="{StaticResource ListViewHeaderStyle}"> <GridViewColumn Width="495" DisplayMemberBinding="{Binding File}" /> <GridViewColumn x:Name="SpeedCell" Width="100" CellTemplate="{StaticResource MyDataTemplate2}" /> <GridViewColumn Width="100" DisplayMemberBinding="{Binding Duration}" /> <GridViewColumn Width="100" DisplayMemberBinding="{Binding Packets, StringFormat={}{0:#,0}}" /> <GridViewColumn Width="100" DisplayMemberBinding="{Binding PacketsSent, StringFormat={}{0:#,0}}" /> <GridViewColumn x:Name="ProgressCell" Width="60" Header="Progress" CellTemplate="{StaticResource MyDataTemplate}" /> </GridView> </ListView.View> <ListView.ContextMenu> <ContextMenu> <MenuItem Header="Open Capture" FontSize="12" FontFamily="Microsoft Sans Serif" Click="MenuItem_Click" VerticalAlignment="Center" Height="20"> <MenuItem.Icon> <Image Height="18" Width="18" VerticalAlignment="Center" /> <!-- <Source="C:\Users\rsteinbe\Dropbox\PacketPlayer\PacketPlayer\resources\wireshark.ico" />--> </MenuItem.Icon> </MenuItem> </ContextMenu> </ListView.ContextMenu> </ListView>
ListViewItem
模板中有一个“UpperHighlight”矩形
,所以有了这种额外的颜色,从外部无法访问它。所以只剩下覆盖整个模板了
首先,将以下内容添加到您的资源中:
<Style x:Key="ListViewItemFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle RadiusY="2" RadiusX="2" Stroke="#8E6EA6F5" StrokeThickness="1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<LinearGradientBrush x:Key="ListItemHoverFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF1FBFF" Offset="0"/>
<GradientStop Color="#FFD5F1FE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFD9F4FF" Offset="0"/>
<GradientStop Color="#FF9BDDFB" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedInactiveFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFEEEDED" Offset="0"/>
<GradientStop Color="#FFDDDDDD" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedHoverFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFEAF9FF" Offset="0"/>
<GradientStop Color="#FFC9EDFD" Offset="1"/>
</LinearGradientBrush>
这可不好看。由于默认
ListViewItem
模板中有一个“UpperHighlight”矩形
,所以有了这种额外的颜色,从外部无法访问它。所以只剩下覆盖整个模板了
首先,将以下内容添加到您的资源中:
<Style x:Key="ListViewItemFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle RadiusY="2" RadiusX="2" Stroke="#8E6EA6F5" StrokeThickness="1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<LinearGradientBrush x:Key="ListItemHoverFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF1FBFF" Offset="0"/>
<GradientStop Color="#FFD5F1FE" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFD9F4FF" Offset="0"/>
<GradientStop Color="#FF9BDDFB" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedInactiveFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFEEEDED" Offset="0"/>
<GradientStop Color="#FFDDDDDD" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ListItemSelectedHoverFill" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFEAF9FF" Offset="0"/>
<GradientStop Color="#FFC9EDFD" Offset="1"/>
</LinearGradientBrush>
可能是因为模板有两个边框或类似的东西。向我们展示您的代码,以便我们提供帮助。可能是因为模板有两个边框或类似的东西。给我们看一下你的代码,这样我们就能帮上忙了。我应该把它放在哪里?在什么下?确定我将其放在ListViewItem-->样式下,但Property=“Template”不可识别或不可访问您必须将其添加到ListViewItem样式中,但在style.Triggers之前。其他内容,即资源,您可以将其添加到ListView中。资源,但我建议您在样式和模板实际使用这些资源之前定义它们。。。StaticResource引用要求引用的资源事先在XAML中声明。我将第一个代码放在窗口中。参考资料和第二个代码:inside ListViewItem我有Style和inside Style。触发器我没有setter我应该把它确切地放在哪里?在什么下?确定我将其放在ListViewItem-->样式下,但Property=“Template”不可识别或不可访问您必须将其添加到ListViewItem样式中,但在style.Triggers之前。其他内容,即资源,您可以将其添加到ListView中。资源,但我建议您在样式和模板实际使用这些资源之前定义它们。。。StaticResource引用要求引用的资源事先在XAML中声明。我将第一个代码放在窗口内。资源和这个细节,第二个代码:inside ListViewItem我有样式和inside样式。触发器我没有Setter