隐藏复选框,直到鼠标滑过,并在选中WPF后使其保持不变

隐藏复选框,直到鼠标滑过,并在选中WPF后使其保持不变,wpf,xaml,checkbox,mouseover,multidatatrigger,Wpf,Xaml,Checkbox,Mouseover,Multidatatrigger,在我将鼠标移到我想要的位置之前,复选框是不可见的,但现在我希望它在选中后保持可见。我尝试过实现多触发器,但它似乎不起作用: <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox Name="cbkSelect" IsChecked="{Binding Path=IsSelectedForOrder, Mode=Tw

在我将鼠标移到我想要的位置之前,复选框是不可见的,但现在我希望它在选中后保持可见。我尝试过实现多触发器,但它似乎不起作用:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <CheckBox Name="cbkSelect" 
                IsChecked="{Binding Path=IsSelectedForOrder, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
         <CheckBox.Style>
            <Style TargetType="{x:Type CheckBox}">
               <Setter Property="Visibility" Value="Hidden"/>
               <Style.Triggers>
                  <MultiDataTrigger>
                     <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Value="True"></Condition>
                        <Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Value="True"></Condition>
                     </MultiDataTrigger.Conditions>
                     <MultiDataTrigger.Setters>
                        <Setter Property="Visibility" Value="Visible"/>
                     </MultiDataTrigger.Setters>
                  </MultiDataTrigger>
               </Style.Triggers>
            </Style>
         </CheckBox.Style>
      </CheckBox>
   </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

A仅在满足所有条件时应用设定器

表示当绑定数据满足一组条件时应用属性值或执行操作的触发器

除此之外,绑定到
DataGridRow
不起作用,因为它没有
IsChecked
属性。相反,添加一个作用于关联的
复选框的
IsChecked
属性的

<Style TargetType="{x:Type CheckBox}">
   <Setter Property="Visibility" Value="Hidden"/>
   <Style.Triggers>
      <Trigger Property="IsChecked" Value="True">
         <Setter Property="Visibility" Value="Visible"/>
      </Trigger>
      <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Value="True">
         <Setter Property="Visibility" Value="Visible"/>
      </DataTrigger>
   </Style.Triggers>
</Style>


非常感谢您!真管用!快速跟进问题,如果我想通过更改文本颜色(即灰色表示未选中)而不是显示复选框来显示选中/未选中的行,我会更改属性/值组合吗?@AlexJohnson这取决于您所说的“选中”是什么意思。我猜您指的是自定义选择,如使用
复选框
。要更改文本颜色,您需要设置
前景
。但是,要在选择了
DataGrid
中的行或单元格时也应用此颜色,您需要更改控件模板,因为这会覆盖选定状态下的前景色,但这远远超出了注释的范围,因为它需要大量代码。请考虑一个单独的问题来跟进这样的事情。作为单独的问题发布。