HTML5などでお馴染みのプレースホルダ(Placeholder)ですが、Windows Store ApplicationをC#+XAMLで開発する中で実装としようとしたところ、標準機能では実装されて無いようで少し驚きました。今回は、「プレースホルダみたいなもの」を実装してみたので書きます。
ご存知の通り、プレースホルダですが、HTML5の場合は簡単に実装できます。
<input placeholder="これがプレースホルダ...">
こんな感じで表示されます。
色々調べてみたところ、C#のコードを書くことで似た機能を実装できるようなのでやってみました。
今回は、「TextBoxForPlaceholder」という名前のTextBoxを作成して、GotFocusとLostFocusのイベントを連携させて実装した例です。
private void TextBoxForPlaceholder_GotFocus(object sender, RoutedEventArgs e) { if (TextBoxForPlaceholder.Text.Equals("何か入力してください・・・", StringComparison.OrdinalIgnoreCase)) { TextBoxForPlaceholder.Text = string.Empty; } } private void TextBoxForPlaceholder_LostFocus(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(TextBoxForPlaceholder.Text)) { TextBoxForPlaceholder.Text = "何か入力してください・・・"; } }
項目への入力チェックとの兼ね合いなど、考慮しなければならない点は残りますが、何とかそれらしいものはできました。
ちなみに、Windows8.1からは標準機能で実現できるようになるようです。
http://msdn.microsoft.com/en-us/library/windows/apps/bg182878.aspx#Placeholder