2019年06月27日
川俣晶の縁側ソフトウェア技術雑記 total 3055 count

UWPのスクロールボックスでスクロールダウンできない

Written By: 川俣 晶連絡先

問題 §

 UWPのプログラムからテキストボックスを末尾にスクロールダウンさせようとしたができない。

XAML

                <ScrollViewer VerticalScrollBarVisibility="Visible" 

                              HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,80,10,40" >

                    <TextBox x:Name="mainText" TextWrapping="Wrap"  AcceptsReturn="True" IsReadOnly="True" ></TextBox>

                </ScrollViewer>

C#

        private void ScrollToBottom(TextBox textBox)

        {

            var parent = textBox.Parent as ScrollViewer;

            if (parent == null) return;

            parent.ChangeView(0.0f, parent.ExtentHeight, 1.0f, true);

        }

原因 §

 キャレット位置が先頭なのでスクロール位置が戻されてしまう。

解決 §

 キャレット位置も末尾に設定する。

 以下のようなコードをメソッドの先頭に入れる。

            textBox.Select(textBox.Text.Length, 0);