2010-12-21 2 views
12

をフォーマットなし:WPFは、バインド - StringFormatを - 私のように設定された値を持つツールヒント持っ

Value="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" 

toolipのように表示されます。

しかし、私はそれを期待しますになる:

予約済み(株式持分:72%)

私のバインディングにはどのような問題がありますか?

+0

このxamlはどのようにコンパイルされたのですか? –

答えて

15

を試してみてください、あなたは試してみました:

<ToolTip> 
    <TextBlock Text="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" /> 
</ToolTip> 
+0

優秀、ありがとう –

+1

なぜ彼はValueプロパティを使用できませんでしたか? –

+1

@TomerW:ミッチはなぜ彼の答えで説明します。 – decyclone

-1

StringFormat=Reserved (Equity Share: {0:P0}) 
+0

これは何の違いもありませんce。 –

+0

試しましたか? –

3

をあなたは括弧をエスケープする必要はありません。 (私は単一引用符でフォーマットを入れるのが好き)、これを試してみてください:

Value="{Binding Path=DataItem.EquitySold, StringFormat='Reserved (Equity Share: {0}%)'}" 
+0

これは何の違いもないのではないかと心配です –

+3

値をテキストに変更すると、同様に動作します... –

0

私はそれはあなたのデータ型がサポートするものであると仮定 - 私はそれがIFormattableに引数として渡される知る限り。

42

ツールチップはコンテンツコントロールです。つまり、実際には表示モデルがありません。これは、コンテンツをTextBlockに設定する@deccycloneの以前の回答で実証されています。 TextBoxはテキストを表示するように設計されているため、StringFormatバインディングプロパティは宣言したとおりに動作します。ボタンはこれの別の例です。 (両方ともContentControlから派生します)

ツールヒントのコンテンツを文字列に設定すると、dataTypeがstringの場合にツールヒントに組み込まれているコンバーターがあるため、文字列が表示されます。組み込みの文字列コンバーターを利用する場合は、ContentStringFormatプロパティーを使用してフォーマットを設定する必要があります。

<ToolTip 
    Content="{Binding Path=Value}" 
    ContentStringFormat="{}{0:F2} M" 
/> 

BTW、StringFormat又はContentStringFormatを使用する場合のチップオフが表示されるテキストを設定するための制御供給する性によるものです。 Textプロパティ - > StringFormat Contentプロパティを使用 - >これはStyle経由でツールチップStringFormatを設定するために望まれたわずかに異なる状況でここに巻き上げ他の誰のためにDataGridTemplateColumn

+2

ヘッダープロパティ - > HeaderStringFormat :)ありがとう!詳細は – surfen

+0

+1です。 – decyclone

+0

ContentStringFormatの最初と最後に中かっこがリストされていますか? – ClearCloud8

0
<Button.ToolTip> 
<TextBlock Text="{Binding Path=ToggleText, StringFormat={}{0} Text}"/> 
</Button.ToolTip> 

ボタンを使用します:

<DataGridTextColumn Header="Amount" CanUserSort="True" 
            Binding="{Binding Amount,Mode=OneWay}"> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="ToolTip"> 
       <Setter.Value> 
        <TextBlock Text="{Binding JournalEntryId, StringFormat='Reserved (Equity Share: \{0\}%)'}" /> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 
0

内ContentStringFormat

関連する問題