2013-03-12 53 views
0

我有这个非常简单的ChildWindow:Silverlight 4的内部的ScrollViewer的TextBlock被裁剪文本右侧

<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从左侧改为中间,我会在块的两侧获得像素剪裁。

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

回答

1

事实证明,这种工作原理:

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

据我所知,实际的罪魁祸首是明确设置TextBlock的宽度。

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

这个解决方案的工作原理 - 谢谢 - 但问题不在于ScrollViewer(我在问题陈述中提到我已经拿出来了)。这个问题似乎已经明确地设置了TextBlock Width。 – 2013-03-22 20:45:54