我目前正在开发一个在ListView控件中使用GridView的应用程序。
我试图更改所选行上的蓝色悬停/点击效果,到目前为止,无论我尝试过什么,我都无法做到(我尝试过很多东西)
来自app.xaml的相关xaml:
<Style x:Key="{x:Type ListView}" TargetType="ListView">
<Setter Property="BorderThickness" Value="0" />
</Style>
<Style TargetType="{x:Type GridViewRowPresenter}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Height" Value="20" /> <!-- This actually works here, but I can't change background -->
</Trigger>
</Style.Triggers>
</Style>
Xaml listview代码:
<ListView HorizontalAlignment="Left" Height="668" VerticalAlignment="Top" Width="700" Foreground="#BDBDBD" Background="#090909" Name="Results">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" Width="130"/>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="220"/>
<GridViewColumn Header="Details" DisplayMemberBinding="{Binding Details}" Width="120"/>
</GridView>
</ListView.View>
</ListView>
我真的想学习如何在gridview的模板中更改悬停颜色..而且我到处都是,但没有运气.. PS。我在Windows 7上,但同样的事情也在Windows 8上。
答案 0 :(得分:0)
不清楚为什么你的第一种方法不起作用(它必须,你正在设置哪种属性?),但无论如何这里是一个有效的方法
<ListView ...>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
您可能希望与IsSelected
打交道,以区分选定的和未选择的突出显示颜色。然后,您可能希望使用MultiDataTrigger
,例如下面的示例删除除选定项目之外的任何内容的高亮显示(仅限边框):
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
Value="True" />
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}"
Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Background"
Value="Transparent" />
</MultiDataTrigger>