コントロールが最初にロードされたときに、TextBox内のすべてのテキストを選択するための最良の方法を見つけようとしています。MVVMパターンを使用しているので、TextBoxのTextプロパティをViewModelの文字列に双方向でバインドしています。このTextBoxを使用して、すでに名前が付けられているものの「名前を変更」しているので、コントロールの読み込み時に古い名前を選択して、簡単に削除して名前を変更できるようにします。最初のテキスト(古い名前)は、ViewModelに設定することで入力され、データバインディングが完了した後、TextBoxに反映されます。
私が本当にやりたいのは次のようなものです。
<TextBox x:Name="NameTextBox" Text="{Binding NameViewModelProperty, Mode=TwoWay}" SelectedText="{Binding NameViewModelProperty, Mode=OneTime}" />
基本的には、テキスト全体をOneTimeバインディングのSelectedTextとして使用します。ただし、SelectedTextはDependencyPropertyではないため、これは機能しません。
私は自分のビューのコードビハインドに選択コードを追加することに完全に反対しているわけではありませんが、その場合の私の問題は、最初のテキストバインディングがいつ完了したかを判断することです。TextBoxは常に空で開始されるため、コンストラクターで実行することはできません。TextChangedイベントは、ユーザーが新しいテキストを入力したときにのみ発生するように見えます。ViewModelの最初のバインドからテキストが変更されたときは発生しません。
どんなアイデアでも大歓迎です!