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>