0

TextBoxScrollViewer文本更改时运行应该滚动到末尾的操作。

这里xaml

<ScrollViewer>
   <TextBox IsReadOnly="True" Text="{Binding SomeText}">
      <i:Interaction.Triggers>
          <i:EventTrigger EventName="TextChanged">
              <ac:ScrollToEndAction/>
          </i:EventTrigger>
      </i:Interaction.Triggers>
   </TextBox>
</ScrollViewer>

这里的动作:

public class ScrollToEndAction : TargetedTriggerAction<FrameworkElement>
{
    protected override void Invoke(object parameter)
    {
        TextBox _textBox = (parameter as TextChangedEventArgs).OriginalSource as TextBox;
        _textBox.ScrollToEnd();
    }
}

这没用。

我尝试通过以下方式更改文本(它有效!):

public class ScrollToEndAction : TargetedTriggerAction<FrameworkElement>
{
    protected override void Invoke(object parameter)
    {
        TextBox _textBox = (parameter as TextChangedEventArgs).OriginalSource as TextBox;
        _textBox.Text="Test";
    }
}

为什么会这样?

4

1 回答 1

0

最后通过使用解决了这个问题:

TextBox _textBox = (parameter as TextChangedEventArgs).OriginalSource as TextBox;
_textBox.ScrollToLine(_textBox.LineCount - 1);

有点奇怪,

但最重要的是它有效

于 2013-02-19T13:17:44.863 回答