スライダーコントロールのツールチップをそのValueプロパティにバインドし、StringFormatを使用して「現在の値{0} of 10」を表示しようとしています。ここで、{0}はValueプロパティです。以下は、これを理解するために私が試したさまざまなことの1つです。
<Slider.ToolTip>
<Label>
<Label.Content>
<Binding StringFormat="Current Value {0} of 10"
ElementName="DebugLevelSlider"
Path="Value" />
</Label.Content>
</Label>
</Slider.ToolTip>
上記のような文字列リテラルでstringformatを使用する方法の例をオンラインで見つけるのに問題があります。文字列形式の日付/時刻/通貨形式の変換がたくさんあります。私はこれをマルチバインディングで行う方法があると思いますが、必要以上に余分な作業のように思えます。文字列リテラルの書式設定では、まだカスタムコンバーターを記述する必要がないことを願っています。
私のアプリでは、アイテムの横に追加のラベルをたくさん使用しているので、stringformatを理解することで、不要なラベルの一部を削除できると思います。
ツールチップについては、チェックアウトできます StringFormatを使用したWPFバインディングは、ツールチップでは機能しません 。
上記で指定したStringFormatまでは、文字列をエスケープする必要があります。
StringFormat="{}Current Value {0} of 10"
以下はStringFormatの例です。 http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx
Label.Content
はオブジェクトであるため、バインディングのターゲットタイプはstring
である必要があるため、そこではBinding.StringFormat
を使用できません。
2つの回避策は次のとおりです。TextBlock
の代わりにLabel
を使用し、Text
プロパティをバインドします。
Label.ContentStringFormat を使用します。
<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} />
最初の文字が{}
の場合は、string
を{
でエスケープするだけです。