Что нужно сделать в нашем проекте при переходе с oracle jdk на openjdk?

Причина, по которой это не работает, заключается в том, что свойство Label.Content имеет тип Object, а Binding.StringFormat используется только при привязке к свойству типа String.

Что происходит:

  1. Binding боксирует ваше значение MaxLevelOfInvestment и сохраняет его свойство Label.Content как десятичное значение в коробке.
  2. Элемент управления Label имеет шаблон, который включает в себя ContentPresenter.
  3. Поскольку ContentTemplate не установлен, ContentPresenter ищет DataTemplate, определенный для типа Decimal. Когда он не находит ничего, он использует шаблон по умолчанию.
  4. Шаблон по умолчанию, используемый ContentPresenter, представляет строки с использованием свойства метки ContentStringFormat.

Two Решения возможны:

  • Использовать Label.ContentStringFormat вместо Binding.StringFormat или
  • Использовать свойство String, например TextBlock.Text, вместо Label.Content

Вот как использовать 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.

-2
задан john 21 January 2019 в 03:32
поделиться

1 ответ

Насколько мне известно, 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.

См. Также:

0
ответ дан howlger 21 January 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: