ログ出力に使用される読み取り専用の RichTextBox がいくつかあります。それらは読み取り専用であるため、テキストが更新されたときに自動的にスクロールするようには見えません。TextChanged イベントを使用してスクロールを強制的に終了させることはできますが、XAML でプロパティまたは何かを設定して、スクロールが通常どおりに行われるようにする方法はありませんか?
26007 次
4 に答える
21
私はあなたの問題をグーグルで検索し、この投稿を見つけました。「RichTextBox のプログラミング」セクションで、著者は、期待していた動作を取得する方法について説明しました。
確認して、何か役に立つかどうか教えてください。
私はあなたの問題を再現しようとしましたが、次の解決策を思い付きました
<Window x:Class="CheckRichTextBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="170" Width="300">
<StackPanel>
<RichTextBox Height="100" Name="richTextBox1" IsReadOnly="True" VerticalScrollBarVisibility="Visible"/>
<Button Name="btnAdd" Content="Click me to add text" VerticalAlignment="Bottom" Click="BtnAddClick" />
</StackPanel>
</Window>
同じコードの背後にあるものは次のとおりです。
using System.Windows;
namespace CheckRichTextBox
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void BtnAddClick(object sender, RoutedEventArgs e)
{
richTextBox1.AppendText("You had Clicked the button for adding text\n");
richTextBox1.ScrollToEnd();
}
}
}
これにより、自動スクロールの問題が解決されます。確認して、役立つかどうかをお知らせください。
于 2012-04-25T04:57:31.923 に答える
17
この問題は、インタラクティブトリガーと非常に単純なアクションを使用して解決しました。
アクションは次のようになります。
public class ScrollToBottomAction : TriggerAction<RichTextBox>
{
protected override void Invoke(object parameter)
{
AssociatedObject.ScrollToEnd();
}
}
次に、私の XAML には次のようなものがあります。
<RichTextBox IsReadOnly="True" VerticalScrollBarVisibility="Auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<interactivity:ScrollToBottomAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RichTextBox>
于 2014-01-20T16:11:23.107 に答える
-1
RichTextBox.AppendText("String")
RichTextBox.ScrollToCaret()
RichTextBox.text に追加すると、ScrollToCaret() が機能しません。
RichTextBox.text = RichTextBox.text + "String"
RichTextBox.ScrollToCaret()
于 2015-05-03T23:23:44.207 に答える