Windows 8 のメトロ スタイル アプリケーションで何かを動作させようとしてきましたが、動作するための適切なプロパティを取得できません。これが私がしたいことです:
StackPanel を含む ScrollViewer があります。RichTextBoxes がスタック パネルに追加されます (サーバーからのテキスト データのストリーミング)。コンソールのように効果的に機能します。したがって、私のレイアウトはおおよそ次のようになります。
<ScrollViewer>
<StackPanel x:Name="outputStackPanel"/>
</ScrollViewer>
私の望ましい動作は次のとおりです。テキストを画面サイズの水平方向に均一に拡大縮小してから、ScrollViewer で垂直にスクロールします。つまり、私が使用しているフォントは固定幅フォントであり、画面サイズに関係なく、同じ数の ASCII 文字を表示したいということです。
さらに、テキストを画面に折り返すか、折り返さないかをアプリで選択できます。つまり、テキストが折り返されている場合は、固定された画面幅に折り返される必要がありますが、そうでない場合、ScrollViewer は水平方向にスクロール可能である必要がありますが、スクロール中にほぼ同じ数の文字が水平方向に表示される必要があります。
これを行うためにいくつかの方法を試しましたが、どれも成功していません。次のように、ViewBox を追加しようとしました。
<ScrollViewer>
<Viewbox Stretch="UniformToFill" StretchDirection="UpOnly">
<StackPanel x:Name="outputStackPanel" />
</ViewBox>
</ScrollViewer>
これは、テキストを適切なサイズで表示するという点では機能しているように見えますが、テキストの折り返しがオンの場合、テキストを折り返すことはできません。コンテンツは右側で単純に切り取られています。
私の現在の回避策は、画面の解像度を確認し、フォントサイズを大まかに見積もって正しく表示することですが、これは正確ではないため理想的ではありません。解像度が異なると、表示される文字数が大きく異なります。このアプリケーションの目的では、表示可能な文字数が重要です。