2010-12-21 10 views
12

que tienen una información sobre herramientas con un valor establecido como:WPF Encuadernación - StringFormat - No Formateo

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

El Toolip está mostrando como:

pero espero que ser:

Reservado (participación de la equidad: 72%)

¿Qué pasa con mi encuadernación?

+0

no puedo entender ¿cómo este XAML compilar en absoluto –

Respuesta

15

Ha intentado:

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

Excelente, gracias –

+1

¿Por qué no podía usar Value Property? –

+1

@TomerW: Mitch explica por qué en su respuesta. – decyclone

-1

Trate

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

me temo que esto no hizo ninguna diferen ce. –

+0

¿Has probado? –

3

No es necesario para escapar de los soportes. Prueba esto (me gusta poner el formato entre comillas simples):

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

Me temo que esto no hizo ninguna diferencia –

+3

Cambie el valor a texto, y funcionará también ... –

0

supongo que es la que admite el tipo de datos - por lo que yo sé que se pasa como argumento a IFormattable.

42

Una información sobre herramientas es un control de contenido, lo que significa que realmente no tiene un modelo de visualización. Esto se demuestra en la respuesta anterior de @deccyclone que establece el contenido en un TextBlock. Dado que TextBox está diseñado para mostrar texto, la propiedad de enlace StringFormat funciona según lo anunciado. Button es otro ejemplo de esto. (Ambos derivan de ContentControl)

Si establece el contenido de una información sobre herramientas en una cadena, la cadena se muestra porque la información sobre herramientas tiene un convertidor incorporado si el tipo de datos es una cadena. Si desea aprovechar el convertidor de cadenas integrado, debe establecer el formato con la propiedad ContentStringFormat.

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

Por cierto, la punta fuera de cuándo utilizar StringFormat o ContentStringFormat es por esto que la propiedad de los equipos de control para ajustar el texto que se muestra. propiedad Text -> utilización StringFormat propiedad Content -> utilización ContentStringFormat

+2

Propiedad del encabezado -> HeaderStringFormat :) ¡Gracias! – surfen

+0

+1 para los detalles. – decyclone

+0

¿Por qué tiene llaves abiertas y cerradas que figuran primero en su ContentStringFormat? – ClearCloud8

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

botón dentro DataGridTemplateColumn

0

Para cualquier otra persona que termina aquí en una situación un poco diferente este se deseaba para un mensaje de ayuda StringFormat través 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> 
Cuestiones relacionadas