WPF検索テキストボックスの「検索ボックスのデフォルトテキストの変更」とまったく同じようなものを実装したいと思います。ボックスには、空の場合はグレー表示の「Search ..」テキストが表示され、テキストを入力すると正常に機能するはずです。リンクされた記事は、JavaScriptでこれを行う方法を示しています。WPFでこのパスをどのように開始しますか?私がこれまでに持っていた最良のアイデアは、検索テキストボックスがフォーカスまたはテキストを取得するたびに非表示になるメインテキストボックスの上にある別のテキストボックスです。
6 に答える
このスタイルは、背景プロパティとビジュアルブラシを使用してテキストを表示します。コントロールがフォーカスされると、テキストは削除されます。
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="Enter value" Foreground="Gray"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="{x:Null}">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="Enter value" Foreground="Gray"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsFocused}" Value="True">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
Kevin Moore の Bag-o-Tricks の InfoTextBox サンプルを試してください。http://work.j832.com/2008/01/real-update-to-bag-o-tricks.htmlからダウンロードできます 。
私が考える最良の方法は、ビジュアル ブラシを使用して背景を設定することです。ビジュアル ブラシを使用すると、Visual Elements を使用して背景をペイントし、空のテキストに基づくトリガーと組み合わせて、完了です。
Empty List Box メッセージの例はこちらです。基本的には同じことです。 http://adammills.wordpress.com/2010/08/04/simple-empty-template-for-itemscontrols/
WPF ではいつものように、目標を達成する方法はたくさんあります。
おそらく最もクリーンな方法はTextBox
、 という新しいプロパティをサブクラス化して追加することHintText
です。コントロールのテンプレートは、空 ( ) であるHintText
限り (おそらくイタリック体と灰色で)表示されます。それ以外の場合は、通常の と同じように表示されます。Text
""
Text
TextBox
独自のコントロールを記述する必要のない別の方法は、テンプレートを再作成TextBox
し、プロパティを使用しTag
てヒント テキストを格納することです。
別の方法として、 a と aUserControl
を組み合わせた aTextBox
をTextBlock
、同じ 内にa と書くこともできGrid
ます。にはヒント テキストが含まれ、が空のTextBlock
場合にのみ表示されます。これはおそらく最も簡単に実現できますが、柔軟性が最も低くなります。TextBox
Text
WPF 拡張ツールキットに含まれている WatermarkTextBox はまさにあなたが望んでいることだと思います。
http://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox&referringTitle=ドキュメント
テキストボックスが空のときは常に灰色のテキストを持ち、変数が空であることを示すようにテキストボックスを変換して、[検索] をクリックしたときに「検索...」を検索しないようにすることができます。
または、あなたが言っていることに似たものを使用することもできますが、上のテキスト ボックスの代わりに下にテキストを表示することもできます。上部に背景が透明なテキストボックスがあり、下部に上部のテキストボックスが空のときに「検索」というラベルがある場合、問題は解決するはずです。