Mer*_*rad 15 c# wpf xaml richtextbox
我有几个只读的RichTextBox用于记录输出.因为它们是只读的,所以当文本更新时它们似乎不会自动滚动.我可以使用TextChanged事件来强制滚动结束,但是不是简单地在XAML中设置属性或其他东西的方法,以便滚动像正常一样发生吗?
Pan*_*ank 19
我搜索了你的问题并发现了这篇文章.在"编写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>
Run Code Online (Sandbox Code Playgroud)
后面的代码如下:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这解决了自动滚动的问题,请检查它,并告诉我它是否有任何帮助.
Sam*_*ack 14
我使用Interactivity触发器和一个非常简单的操作解决了这个问题.
该动作如下所示:
public class ScrollToBottomAction : TriggerAction<RichTextBox>
{
protected override void Invoke(object parameter)
{
AssociatedObject.ScrollToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的XAML中我有这个:
<RichTextBox IsReadOnly="True" VerticalScrollBarVisibility="Auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<interactivity:ScrollToBottomAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RichTextBox>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22084 次 |
| 最近记录: |