Я пытаюсь найти лучший способ выделить весь текст в TextBox при первой загрузке элемента управления. Я использую шаблон MVVM, поэтому я использую двустороннее связывание для свойства Text объекта TextBox со строкой в моей ViewModel. Я использую этот TextBox для «переименования» чего-то, у кого уже есть имя, поэтому я хотел бы выбрать старое имя при загрузке элемента управления, чтобы его можно было легко удалить и переименовать. Исходный текст (старое имя) заполняется путем установки его в моей ViewModel, а затем он отражается в TextBox после завершения привязки данных.
То, что я бы действительно хотел бы сделать, выглядит примерно так:
<TextBox x:Name="NameTextBox" Text="{Binding NameViewModelProperty, Mode=TwoWay}" SelectedText="{Binding NameViewModelProperty, Mode=OneTime}" />
В основном просто используйте весь текст в качестве SelectedText с привязкой OneTime. Однако это не работает, поскольку SelectedText не является DependencyProperty.
Я не совсем против добавления кода выбора в коде моего представления, но моя проблема в этом случае заключается в определении того, когда начальная привязка текста завершена. TextBox всегда начинается пустым, поэтому это не может быть сделано в конструкторе. Кажется, что событие TextChanged срабатывает только тогда, когда пользователь вводит новый текст, а не когда текст изменяется по сравнению с начальной привязкой ViewModel.
Любые идеи очень ценятся!