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 に答える