0

我有这个非常简单的 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 中添加了越来越多的内容,但这并没有帮助。滚动条本身并没有踩到文本,文本只是在到达块的右侧时下降了一堆像素。有时,甚至不是整个字母都被剪掉了。看到什么了吗?

此外,如果我将 Horizo​​ntalAlignment 从 Left 更改为 Center,我会在块的两侧得到像素剪裁。

此外,如果我完全删除 ScrollViewer,剪辑仍然存在,所以这也不是他的错。

4

2 回答 2

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>
于 2013-03-12T22:37:57.057 回答
1

事实证明这是有效的:

    <ScrollViewer Width="378" >
        <StackPanel>
            <TextBlock x:Name="txtFracture" Margin="10,10,10,10" TextWrapping="Wrap" />
        </StackPanel>
    </ScrollViewer>

据我所知,真正的罪魁祸首是明确设置的 TextBlock Width。

于 2013-03-22T20:46:02.677 回答