2010-10-19 17 views
22

He vinculado la información sobre herramientas de un control deslizante a su propiedad Value y estoy tratando de usar StringFormat para que muestre "Valor actual {0} de 10" donde { 0} es la propiedad Value. A continuación se muestra una de las varias cosas que intenté al tratar de resolver esto.wpf - formato de cadena vinculante en la etiqueta utilizando cadena literal

<Slider.ToolTip> 
    <Label> 
    <Label.Content> 
     <Binding StringFormat="Current Value {0} of 10" 
       ElementName="DebugLevelSlider" 
       Path="Value" /> 
    </Label.Content> 
    </Label> 
</Slider.ToolTip> 

Estoy teniendo problemas para encontrar ejemplos en línea de cómo utilizar StringFormat con literales de cadena como el mío anteriormente. Veo una gran cantidad de formato de cadena de conversión de formato de fecha/hora/moneda. Creo que tengo una forma de hacer esto con una multibomba pero parece una cantidad extra de trabajo más de lo necesario. Espero que para el formato literal de cadena todavía no tenga que escribir un convertidor personalizado.

En mi aplicación me encuentro usando muchas etiquetas adicionales al lado de los artículos, por lo que entender mejor el formato de cadena me permitirá eliminar algunas de esas etiquetas innecesarias.

Respuesta

32

Para la información sobre herramientas, puede consultar WPF binding with StringFormat doesn't work on ToolTips.

En cuanto al StringFormat que especificó anteriormente, tiene que escapar de la cadena.

StringFormat="{}Current Value {0} of 10" 

Aquí hay un montón de ejemplos de StringFormat. http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

+1

Todavía no puedo conseguir la unión a trabajar en la propiedad Valor de mi control deslizante pero funciona cuando ato la información sobre herramientas a la variable a la que está vinculado el control deslizante. Tal vez Value no es una propiedad del control deslizante vinculable .. hmm – TWood

94

Label.Content es objeto de tal manera que no se puede utilizar Binding.StringFormat allí como el tipo de destino de la unión debe ser string con el fin de que funcione.

Hay dos soluciones alternativas: use TextBlock en lugar de Label y vincule la propiedad Text.

Uso Label.ContentStringFormat es decir

<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} /> 

Sólo tiene que escapar de la string con {} si su primer carácter es un {

+0

Las fechas se pueden formatear aquí así: "Fecha de inicio: {0: dd-MM-yyyy}" –

Cuestiones relacionadas