1

我有一个包含 TextBoxes 和 DatePickers 的 WPF 表单。DatePicker 文本框的字体真的很模糊,因为我在样式上添加了阴影效果。最初,所有控件都具有作为样式的一部分的显式投影效果,但我通过从控件中删除投影效果并将其移动到具有相同投影的矩形来解决此问题。

然后我将矩形直接放在文本框后面——我仍然有视觉效果,并且覆盖控件中的字体看起来很棒。

<DropShadowEffect x:Key="dropShadow" Color="Gray" Opacity=".50" ShadowDepth="8" />

<Style x:Key="BackingRectangleStyle" TargetType="Rectangle">
  <Setter Property="Effect" Value="{StaticResource dropShadow}" />
</Style>

<Rectangle Grid.Row="1" Grid.Column="3" Style="{StaticResource BackingRectangleStyle}"/>
<TextBox Grid.Row="1" Grid.Column="3" ... />

但是,我对 DatePicker TextBoxes 的模糊字体也有同样的问题,因为投影效果仍然直接在控件上。

在此处输入图像描述

我没有 DatePicker 样式,但我有 DatePickerTextBox 的样式,这就是效果的来源。

<Style TargetType="{x:Type DatePickerTextBox}">
  <Setter Property="Effect" Value="{StaticResource dropShadow}" />
</Style>

我不知道该怎么做是按照我之前删除效果的模式,创建一个具有相同效果的 Rectangle 并将其放在 DatePicker TextBox 后面,使其大小相同,等等。我需要一些关于 XAML 的帮助这样做。

谁能给我任何建议?

谢谢!

4

1 回答 1

0

因为关于 TextFormattingMode 的知识确实需要传播,所以我决定发布以下内容——尽管奇怪的是DatePickerTextBox它对 仍然是模糊的没有帮助。它可以防止你用后面的矩形拉出的特技TextBox

在此处输入图像描述 在此处输入图像描述

除非您有大的或转换的文本,否则请始终TextOptions.TextFormattingMode="Display"在最外面的 WPF 容器中使用。这是在 WPF 4.0 中引入的,我想默认的“理想”反映了早期版本,但这是一个多么令人难以置信的错误......

<Window x:Class="WpfApplication1.MainWindow" x:Name="MyWindow" 
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Height="300" Width="400"
            TextOptions.TextFormattingMode="Display"> <!-- Please notice the effect of this on font fuzzyness -->
    <Grid>
        <Grid.Resources>
            <DropShadowEffect x:Key="DropShadow" Color="Gray" Opacity=".5" ShadowDepth="8"/>
        </Grid.Resources>
        <TextBox Text="Really Sharp" HorizontalAlignment="Center" Padding="3" VerticalAlignment="Center" Effect="{StaticResource DropShadow}"/>
    </Grid>
</Window>
于 2014-10-24T15:45:30.960 回答