7

WPF検索テキストボックスの「検索ボックスのデフォルトテキストの変更」とまったく同じようなものを実装したいと思います。ボックスには、空の場合はグレー表示の「Search ..」テキストが表示され、テキストを入力すると正常に機能するはずです。リンクされた記事は、JavaScriptでこれを行う方法を示しています。WPFでこのパスをどのように開始しますか?私がこれまでに持っていた最良のアイデアは、検索テキストボックスがフォーカスまたはテキストを取得するたびに非表示になるメインテキストボックスの上にある別のテキストボックスです。

4

6 に答える 6

17

このスタイルは、背景プロパティとビジュアルブラシを使用してテキストを表示します。コントロールがフォーカスされると、テキストは削除されます。

    <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>
于 2011-04-18T19:11:17.140 に答える
7

Kevin Moore の Bag-o-Tricks の InfoTextBox サンプルを試してください。http://work.j832.com/2008/01/real-update-to-bag-o-tricks.htmlからダウンロードできます 。

于 2008-12-21T10:46:54.523 に答える
2

私が考える最良の方法は、ビジュアル ブラシを使用して背景を設定することです。ビジュアル ブラシを使用すると、Visual Elements を使用して背景をペイントし、空のテキストに基づくトリガーと組み合わせて、完了です。

Empty List Box メッセージの例はこちらです。基本的には同じことです。 http://adammills.wordpress.com/2010/08/04/simple-empty-template-for-itemscontrols/

于 2010-08-16T13:48:14.487 に答える
1

WPF ではいつものように、目標を達成する方法はたくさんあります。

おそらく最もクリーンな方法はTextBox、 という新しいプロパティをサブクラス化して追加することHintTextです。コントロールのテンプレートは、空 ( ) であるHintText限り (おそらくイタリック体と灰色で)表示されます。それ以外の場合は、通常の と同じように表示されます。Text""TextTextBox

独自のコントロールを記述する必要のない別の方法は、テンプレートを再作成TextBoxし、プロパティを使用しTagてヒント テキストを格納することです。

別の方法として、 a と aUserControlを組み合わせた aTextBoxTextBlock、同じ 内にa と書くこともできGridます。にはヒント テキストが含まれ、が空のTextBlock場合にのみ表示されます。これはおそらく最も簡単に実現できますが、柔軟性が最も低くなります。TextBoxText

于 2008-12-21T10:45:13.730 に答える
1

WPF 拡張ツールキットに含まれている WatermarkTextBox はまさにあなたが望んでいることだと思います。

http://wpftoolkit.codeplex.com/wikipage?title=WatermarkTextBox&referringTitle=ドキュメント

于 2012-08-08T19:46:00.897 に答える
0

テキストボックスが空のときは常に灰色のテキストを持ち、変数が空であることを示すようにテキストボックスを変換して、[検索] をクリックしたときに「検索...」を検索しないようにすることができます。

または、あなたが言っていることに似たものを使用することもできますが、上のテキスト ボックスの代わりに下にテキストを表示することもできます。上部に背景が透明なテキストボックスがあり、下部に上部のテキストボックスが空のときに「検索」というラベルがある場合、問題は解決するはずです。

于 2008-12-21T09:53:58.983 に答える