Wpf XAML:如何从DataRow样式触发到DataGrid单元格设置器?

Wpf XAML:如何从DataRow样式触发到DataGrid单元格设置器?,wpf,xaml,Wpf,Xaml,我正在XAML中使用数据网格。 我为行上的鼠标盖定义了特定的样式。 这是通过标记的内容定义的。 对于一个特定的列(最后一列),我想插入一个图标,它也只在鼠标上方可见。为了在默认状态下隐藏它,我将前景色定义为透明,在标签内容中定义 低于全局XAML 问题在于,单元格中定义的样式会替代行中定义的样式。鼠标悬停的情况也是如此,这意味着我的触发器不考虑该特定列(换句话说,最后一列的所有单元格) 我试图用TargetName声明一个Setter,如下所示,但没有成功,主要是因为我不知道在哪里设置x:


我正在XAML中使用数据网格。
我为行上的鼠标盖定义了特定的样式。
这是通过
标记的内容定义的。

对于一个特定的列(最后一列),我想插入一个图标,它也只在鼠标上方可见。为了在默认状态下隐藏它,我将前景色定义为透明,在标签内容中定义

低于全局XAML


问题在于,单元格中定义的样式会替代行中定义的样式。鼠标悬停的情况也是如此,这意味着我的触发器不考虑该特定列(换句话说,最后一列的所有单元格)

我试图用TargetName声明一个Setter,如下所示,但没有成功,主要是因为我不知道在哪里设置x:Name而不会在项目中触发错误

 <Setter Property="Foreground" Value="#FF31A4CF" TargetName="IconCol" />


如有任何建议,我们将不胜感激。

好的。它成功了,但部分失败了,因为我最终引入了C#代码来处理单元格样式。
我在
标签中插入了一些MouseEnter和MouseLeave事件设置程序

以下是XAML更新部分:

<DataGrid.RowStyle>
      <Style TargetType="DataGridRow" BasedOn="{StaticResource BaseDataGridRowStyle}">

                <EventSetter Event="MouseEnter" Handler="Row_MouseEnter"/>
                <EventSetter Event="MouseLeave" Handler="Row_MouseLeave"/>

                <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="#FF27222A"/>
                                <Setter Property="Foreground" Value="#FF31A4CF" /> 
                                <Setter Property="FontWeight" Value="ExtraBold" />
                                <Setter Property="Cursor" Value="Hand"/>
                        </Trigger>

                        <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="#FF27222A" />
                                <Setter Property="Foreground" Value="#FF31A4CF" />
                                <Setter Property="FontWeight" Value="ExtraBold" />
                        </Trigger>
                </Style.Triggers>
      </Style>
</DataGrid.RowStyle>

然后,当事件被分派到C#代码时,我直接访问所需的单元格,以便在鼠标悬停时应用专用样式

<DataGrid.RowStyle>
      <Style TargetType="DataGridRow" BasedOn="{StaticResource BaseDataGridRowStyle}">

                <EventSetter Event="MouseEnter" Handler="Row_MouseEnter"/>
                <EventSetter Event="MouseLeave" Handler="Row_MouseLeave"/>

                <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="#FF27222A"/>
                                <Setter Property="Foreground" Value="#FF31A4CF" /> 
                                <Setter Property="FontWeight" Value="ExtraBold" />
                                <Setter Property="Cursor" Value="Hand"/>
                        </Trigger>

                        <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="#FF27222A" />
                                <Setter Property="Foreground" Value="#FF31A4CF" />
                                <Setter Property="FontWeight" Value="ExtraBold" />
                        </Trigger>
                </Style.Triggers>
      </Style>
</DataGrid.RowStyle>