WPF - Border &TextBlock -奇怪的行为

本文关键字:TextBlock Border WPF | 更新日期: 2023-09-27 18:10:28

我有这个非常简单的XAML标记

<Grid Margin="20">
    <Grid.RowDefinitions>
        <RowDefinition Height="50"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Vertical" Grid.Row="0">
        <TextBlock Text="Hello World" FontSize="20"/>
        <Border BorderBrush="Black" BorderThickness="0.25"/>
    </StackPanel>
    <StackPanel Orientation="Vertical" Grid.Row="1">
        <TextBlock Text="Hello World" FontSize="19" />
        <Border BorderBrush="Black" BorderThickness="0.25"/>
    </StackPanel>
</Grid>

…并且代码隐藏文件中没有代码。

但是结果很奇怪……当应用程序运行时,第一个stackpanel中的边框会变得蓬松,而第二个stackpanel中的边框则会变得清晰而美观。

唯一的区别是在两个文本块中,第一个文本块的字体大小为20,第二个文本块的字体大小为19。

那么是什么触发了第一个边界的蓬松性…?

WPF - Border &TextBlock -奇怪的行为

尝试在您的网格中使用uselayoutouning ="True" .

https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1& l = EN-US& k = k (System.Windows.FrameworkElement.UseLayoutRounding); k (VS.XamlEditor); k (TargetFrameworkMoniker -.NETFramework,版本% 3 dv4.5.2)和rd = true

    <Grid Margin="20" UseLayoutRounding="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Vertical" Grid.Row="0">
            <TextBlock Text="Hello World" FontSize="20"/>
            <Border BorderBrush="Black" BorderThickness="0.25"/>
        </StackPanel>
        <StackPanel Orientation="Vertical" Grid.Row="1">
            <TextBlock Text="Hello World" FontSize="19" />
            <Border BorderBrush="Black" BorderThickness="0.25"/>
        </StackPanel>
    </Grid>