Самый простой способ - использовать обработчик событий, как вы сказали.
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
textBox.CaretIndex = textBox.Text.Length;
}
Затем назначьте этот обработчик событий каждому TextBox
.
CaretIndex
в общем c TextBox
не является собственностью. Таким образом, для более разумного решения необходимо как минимум создание пользовательского элемента управления, унаследованного от TextBox
. Таким образом, вы можете сделать CaretIndex
свойством. Тогда просто используйте Style.Triggers
в xaml со свойством IsFocused
.