テキストを入力するためのコントロールです。
ページ内リンク
Text プロパティ
TextBox に入力されるテキストは Text プロパティで取得または設定できます。
次のコードでは、入力されたテキストを ViewModel 側で処理するようにデータバインドする例を示します。
TextBox コントロールの下に TextBlock コントロールを表示しています。
TextBox コントロールに入力されたテキストを処理して、
その結果を TextBlock コントロールのテキストに出力します。
TextBox コントロールの Text プロパティに対して InputText プロパティをデータバインドしていますが、
同時に、UpdateSourceTrigger に PropertyChanged を指定しています。
UpdateSourceTrigger とは、データバインドされたソース (ViewModel) に対して、
その変更通知をどのタイミングでおこなうかを指定するプロパティです。
既定値は LostFocus といって、そのコントロールがフォーカスを失ったときに変更通知をおこないます。
これに対して PropertyChanged は、プロパティ値が変更されたらただちに変更通知をおこなうようになります。
この場合、TextBox コントロールの Text プロパティに対して PropertyChanged を指定しているため、
テキストが入力されたらただちに変更通知がおこなわれるようになります。
ViewModel 側のコードを次に示します。
InputText プロパティが変更されたときに、OutputText プロパティをその大文字に変換した文字列として設定しています。
実行結果を下図に示します。
TextBox コントロールにアルファベットを入力すると、すべて大文字に変換されて出力されます。
読み取り専用にするには
IsEnabled プロパティを false にすると、テキスト入力を受け付けなくなりますが、
そのテキストを選択することもできなくなるため、テキストをコピーできなくなります。
TextBox コントロールを読み取り専用とするには、IsReadOnly プロパティを使います。
読み取り専用にしてしまうと、文字入力のときには表示されていたキャレット (点滅する縦線) が表示されなくなってしまいますが、
IsReadOnlyCaretVisible プロパティを true にすることで、
読み取り専用でもキャレットが表示されるようになります。