2015-08-30 27 views
2

我有一個非常簡單的XAML標記WPF - 邊境和TextBlock的 - 奇怪的行爲

<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> 

...並在代碼隱藏文件沒有代碼。

但是結果很奇怪......,當應用程序運行時,第一個堆棧面板中的邊界變得蓬鬆,第二個堆棧面板中的邊界很清晰。

唯一的區別就是在列的2周的TextBlocks發現,第一個文字塊具有20的字體大小,第二個文本塊有19

一個字號那麼觸發第一邊界的fluffyness ...?

+0

如果你設置字號的第一個文本框,以19? – Steve

+0

然後第一個邊界是尖銳的和罰款。 – ThomasE

+0

如果您使用尺碼18,該怎麼辦?怎麼樣一個不同的字體?當使用落在字體「預期」點大小之間的點大小時,我看到了奇怪的字體渲染。這是在標準分辨率顯示器上嗎? –

回答

1

在網格中嘗試UseLayoutRounding =「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,Version%3Dv4.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> 
+0

事實上,如果我在網格中設置了UseLayoutRounding = True,那麼兩個邊框都是隱藏的。另一方面,如果我在第一個TextBlock(字體大小爲20的字體)中設置了UseLayoutRounding = True,則「蓬鬆效果」消失(VS 2013,.NET 4.0) –