La razón por la que esto no funciona es que la Label.Contentpropiedad es de tipo Objecty Binding.StringFormatsolo se usa cuando se vincula a una propiedad de tipo String.
Lo que esta pasando es:
- Se
Bindingcoloca en caja su MaxLevelOfInvestmentvalor y se almacena la Label.Contentpropiedad como un valor decimal en caja.
- El control Etiqueta tiene una plantilla que incluye un
ContentPresenter.
- Como
ContentTemplateno está establecido, ContentPresenterbusca un DataTemplatedefinido para el Decimaltipo. Cuando no encuentra ninguno, utiliza una plantilla predeterminada.
- La plantilla predeterminada utilizada por las
ContentPresentercadenas de presenta mediante el uso de la ContentStringFormatpropiedad de la etiqueta .
Son posibles dos soluciones:
- Utilice Label.ContentStringFormat en lugar de Binding.StringFormat, o
- Utilice una propiedad String como TextBlock.Text en lugar de Label.Content
A continuación, se explica cómo utilizar Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
A continuación se explica cómo usar un TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Nota: Para simplificar he omitido un detalle de la explicación anterior: La ContentPresenterrealidad utiliza sus propios Templatey StringFormatpropiedades, pero durante la carga de estos son automáticamente la plantilla unida a los ContentTemplatey las ContentStringFormatpropiedades de la Label, por lo que parece como si la ContentPresenterrealidad está utilizando las Labelpropiedades 's .