0

TextBoxテキストが変更されたScrollViewerときに、最後までスクロールする必要があるアクションを実行します。

ここに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 に答える