Причина, по которой это не работает, заключается в том, что свойство Label.Content
имеет тип Object
, а Binding.StringFormat
используется только при привязке к свойству типа String
.
Что происходит:
Binding
боксирует ваше значение MaxLevelOfInvestment
и сохраняет его свойство Label.Content
как десятичное значение в коробке. ContentPresenter
. ContentTemplate
не установлен, ContentPresenter
ищет DataTemplate
, определенный для типа Decimal
. Когда он не находит ничего, он использует шаблон по умолчанию. ContentPresenter
, представляет строки с использованием свойства метки ContentStringFormat
. Two Решения возможны:
Вот как использовать Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
Вот как использовать TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Примечание: для простоты я пропустил одна деталь в приведенном выше объяснении: ContentPresenter
фактически использует свои собственные свойства Template
и StringFormat
, но во время загрузки они автоматически привязываются к шаблону ContentTemplate
и ContentStringFormat
свойствам Label
, поэтому кажется, что ContentPresenter
фактически использует свойства Label
.
Насколько мне известно, OpenJDK Java 8 JRE отличается от Oracle Java 8 JRE только отсутствием отсутствующих шрифтов (см. Подпапку lib/fonts
). В прошлом версии OpenJDK также пропускали сертификаты центра сертификации (CA) (см. Файл lib/security/cacerts
), необходимые для SSH (например, для HTTPS), но это было исправлено в текущих версиях OpenJDK.
OpenJDK доступен как с HotSpot , так и с OpenJ9 VM. С виртуальной машиной OpenJ9 можно использовать файл кэша, который сокращает время запуска ( -Xshareclasses
). Кроме того, OpenJ9 требует меньше памяти. С помощью тестирования производительности вы можете узнать, подходит ли виртуальная машина HotSpot или OpenJ9 для вашего приложения.
Если вы обновляете Java 8 до более поздней версии, см. Примечания к выпуску, особенно раздел Удаленные функции и опции , поскольку некоторые части были удалены [ 1126] (например, JAXB был удален в Java 11, хотя он используется не только в приложениях Java EE и CORBA):
Удаленные пакеты можно исправить, добавив дополнительные JAR-файлы в classpath. Для запуска приложения, написанного для Java 8 на Java 9 или выше, может потребоваться аргумент командной строки --add-modules=ALL-SYSTEM
.
См. Также: