所以我ListView
与Check-Box
小区:
<ListView.Resources>
<DataTemplate x:Key="CheckBoxCell">
<CheckBox IsChecked="{Binding Path=IsChecked}"/>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridViewColumn Width="30" x:Name="gridViewColumnIsChecked" CellTemplate="{StaticResource CheckBoxCell}"/>
</ListView.View>
我的ListViewItem
样式有多个触发器,例如IsMouseOver
,所以当IsMouseOver
为True
时,我会更改Background color
。
因此,当鼠标悬停在Check-Box
上时,我想更改ListViewItem
样式\颜色。
我如何实现这一目标?
答案 0 :(得分:1)
使用此代码段:
<DataTemplate x:Key="CheckBoxCell">
<CheckBox>
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Value="True" Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBoxItem}}">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
</DataTemplate>
答案 1 :(得分:0)
解决方案是创建一个DataTrigger,它绑定到父ListViewItem.IsMouseOver属性,就像另一个答案显示
但是,触发器也可以放在<DataTemplate.Triggers>
中以缩短标记。在这种情况下,Setter使用TargetName来访问正确的控件。
<DataTemplate x:Key="CheckBoxCell">
<CheckBox IsChecked="{Binding Path=IsChecked}" Name="Chk" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
Value="True">
<Setter TargetName="Chk" Property="Background" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>