同様の問題に直面しました。テキストを保持でき、ラップでき、親コントロールを塗りつぶし、スクロール可能なテキスト領域が必要でした。
最初にTextBlockをScrollViewerで使用しようとしましたが、うまくいったと思いますが、何らかの理由でFlowDocumentScrollViewerではなくFlowDocumentを使用したいと思いました。この後者はうまくいかず、戦いを放置することができなかったので、解決策を見つけようとしましたが、これが私がここにたどり着いた方法です. 元の質問への回答に示されている回避策を適用しようとしましたが、どちらの解決策もうまくいきませんでした (.NET 4.5 を使用していますが、他のバージョンでも動作する可能性がありますが、それについてはわかりません)。
単一のFlowDocumentを単独で使用してみましたが、コントロールには不要な UI 要素が含まれています。そこで、別の解決策を思いつきました。
<ScrollViewer VerticalScrollBarVisibility="Auto">
<FlowDocumentScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<FlowDocument>
それは正しい。できます!ScrollViewer.ScrollToBottom()を呼び出すだけで機能します! ScrollViewerはスクロールを有効にし、 FlowDocumentScrollViewerはFlowDocumentから UI 要素を削除します。それが役に立てば幸い!
どうやら私の構造には欠陥がありました。この方法では、マウスのスクロール ホイールを介してFlowDocumentをスクロールできないからです。ただし、FlowDocumentScrollViewerコントロールのIsHitTestVisibleプロパティをFalseに設定すると、これが解決されます。