我有这个非常简单的ChildWindow:
<Grid x:Name="LayoutRoot" Margin="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
<Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />
<ScrollViewer Width="378">
<StackPanel>
<TextBlock x:Name="txtFracture" HorizontalAlignment="Left" Margin="10,10,10,10" TextWrapping="Wrap" VerticalAlignment="Top" Width="358"/>
</StackPanel>
</ScrollViewer>
</Grid>
我的问题是TextBlock中的文本被剪裁在右侧。 (我最初没有StackPanel - 这只是一个实验。)我已经添加了越来越多的Margin.Right,但它没有帮助。滚动条本身没有踩到文本,文本只是在它到达块的右边时丢弃了一堆像素。有时,甚至整个字母都没有被剪裁。看到了什么?
另外,如果我将HorizontalAlignment从Left更改为Center,我会在块的两边进行像素剪裁。
另外,如果我完全删除了ScrollViewer,剪辑仍然存在,所以这也不是他的错。
答案 0 :(得分:1)
我注意到你的texblock宽度是常数,你需要在所有方面保证10。在这种情况下,ScrollViewer ScrollBar剪辑您的TextBlock。 可能的解决办法是 1.删除文本块上的宽度并设置对齐拉伸。
试试这个
<ScrollViewer Width="378" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<TextBlock x:Name="txtFracture" HorizontalAlignment="Stretch" Margin="10,10,10,10" TextWrapping="Wrap" VerticalAlignment="Stretch"
Text="Testing"/>
</ScrollViewer>
答案 1 :(得分:1)
事实证明这是有效的:
<ScrollViewer Width="378" >
<StackPanel>
<TextBlock x:Name="txtFracture" Margin="10,10,10,10" TextWrapping="Wrap" />
</StackPanel>
</ScrollViewer>
据我所知,实际的罪魁祸首是明确设置的TextBlock Width。