C# 是否使用文本阴影样式选择了DataGrid单元格?
我正在尝试在选定行时向单元格文本添加文本阴影 更新: 这就是我现在拥有的:C# 是否使用文本阴影样式选择了DataGrid单元格?,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我正在尝试在选定行时向单元格文本添加文本阴影 更新: 这就是我现在拥有的: <Style TargetType="{x:Type DataGridCell}"> <Setter Property="TextOptions.TextFormattingMode" Value="Display" /> <Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" /> <
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="CellContent" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="CellContent" Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter TargetName="CellContent" Property="RenderOptions.ClearTypeHint" Value="Enabled" />
<Setter TargetName="CellContent" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="2" BlurRadius="2" Color="Black" RenderingBias="Quality" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
它只向文本添加阴影(正是我想要的),并且在选中行时(正是我想要的)。唯一的问题是现在我丢失了亚像素抗锯齿:
所选行是下面的一行,背景为蓝色。它现在正在使用某种灰色抗锯齿,这使它看起来很糟糕。我试图设置渲染。ClearTypeHint
但没有成功。如何启用它,使其看起来像没有选择的行一样清晰
这是100%大小(模糊)的灰色抗锯齿效果:
单元格的背景使您无法看到效果。就这样设置背景,但我不知道你是否欣赏结果:
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="2"
BlurRadius="2"
Color="Black"
RenderingBias="Quality"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
编辑
也许这会更好,因为它能让你更好地控制:
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<ContentPresenter x:Name="CellContent"/>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="CellContent" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="2"
BlurRadius="2"
Color="Black"
RenderingBias="Quality"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
谢谢!我几乎解决了这个问题,我已经用更多信息更新了这个问题,如果我能让它生效,我会将你的问题标记为答案。@r首先,我认为字体已针对黑白进行了优化,但也可能与文本框的样式有关。也许您可以从TextBox控件派生并创建一个启用IsDropShadow的布尔dependencyproperty,并在ControlTemplate的触发器中引用它。有关.NET Framework 3的样式(比.NET 4样式更简单),请参见。需要阴影的部分是ScrollViewer
命名的part\u ContentHost。