2010-12-21 14 views
12

mam podpowiedź o wartości ustawiony jako:WPF Binding - StringFormat - Nie Formatowanie

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

toolip jest wyświetlany jako:

Ale spodziewam go być:

Zarezerwowany (udział w kapitale: 72%)

Co jest nie tak z moim wiążącym?

+0

Nie mogę zrozumieć, jak to się kompilowało xaml –

Odpowiedz

15

Czy próbowałeś:

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

Dobrze, dziękuję –

+1

Dlaczego nie mógł użyć własności wartości? –

+1

@TomerW: Mitch wyjaśnia dlaczego w swojej odpowiedzi. – decyclone

-1

Spróbuj

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

Obawiam się, że to się nie zmieniło ce. –

+0

Czy próbowałeś? –

3

Nie trzeba uciekać wsporniki. Spróbuj tego (i jak umieścić format w apostrofach):

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

Obawiam się, że to nie miało żadnego znaczenia. –

+3

Zmień wartość na tekst, a będzie działać również ... –

0

Zakładam, że jest to, co wspiera Twój typ danych - o ile wiem, to jest przekazywane jako argumenty IFormattable.

42

Etykieta narzędzia jest formantem treści, co oznacza, że ​​tak naprawdę nie ma modelu wyświetlania. Zostało to wykazane we wcześniejszej odpowiedzi @decyclone, która ustawia zawartość na TextBlock. Ponieważ TextBox jest zaprojektowany do wyświetlania tekstu, właściwość powiązania StringFormat działa zgodnie z reklamą. Button to kolejny tego przykład. (Obydwa pochodzą z ContentControl)

Ustawienie opcji ToolTip na łańcuch spowoduje wyświetlenie łańcucha, ponieważ ToolTip ma wbudowany konwerter, jeśli typ danych jest łańcuchem. Jeśli chcesz skorzystać z wbudowanego konwertera ciągów, musisz ustawić format przy użyciu właściwości ContentStringFormat.

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

BTW, końcówka off na kiedy używać StringFormat lub ContentStringFormat które jest własnością dostaw kontroli ustawiania wyświetlanego tekstu. właściwość Text -> wykorzystanie StringFormat właściwość Content -> wykorzystanie ContentStringFormat

+2

Właściwość nagłówka -> HeaderStringFormat :) Dzięki! – surfen

+0

+1 dla szczegółów. – decyclone

+0

Dlaczego masz najpierw otwarte i zamknięte nawiasy klamrowe w twoim ContentStringFormat? – ClearCloud8

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

Przycisk wewnątrz DataGridTemplateColumn

0

dla nikogo, że nakręca się tu w nieco innej sytuacji było to pożądanego ustawiania podpowiedź StringFormat poprzez Style :

<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>