Der Grund, warum dies nicht funktioniert, ist, dass die Label.ContentEigenschaft vom Typ Objectist und Binding.StringFormatnur beim Binden an eine Eigenschaft vom Typ verwendet wird String.
Was passiert ist:
- Das
Bindingboxt Ihren MaxLevelOfInvestmentWert und speichert die Label.ContentEigenschaft als dezimalen Boxwert.
- Das Label-Steuerelement verfügt über eine Vorlage, die a enthält
ContentPresenter.
- Da
ContentTemplatenicht gesetzt ist, ContentPresentersucht nach einem DataTemplatefür den DecimalTyp definierten . Wenn keine gefunden wird, wird eine Standardvorlage verwendet.
- Die Standardvorlage, die von den
ContentPresenterPresent-Zeichenfolgen mithilfe der ContentStringFormatEigenschaft des Labels verwendet wird .
Zwei Lösungen sind möglich:
- Verwenden Sie Label.ContentStringFormat anstelle von Binding.StringFormat oder
- Verwenden Sie eine String-Eigenschaft wie TextBlock.Text anstelle von Label.Content
So verwenden Sie Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
So verwenden Sie einen TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Hinweis: Der Einfachheit halber habe ich in der obigen Erklärung ein Detail weggelassen: Das verwendet ContentPresentertatsächlich seine eigenen Templateund StringFormatEigenschaften, aber während des Ladens werden diese automatisch an die ContentTemplateund ContentStringFormatEigenschaften des und gebunden Label, sodass es so aussieht, als ob das ContentPresentertatsächlich die LabelEigenschaften des verwendet .