Создайте следующий вспомогательный метод:
public string GetDynamicResourceKey(DependencyObject dObj, DependencyProperty dp)
{
var value = dObj.ReadLocalValue(dp);
var converter = new ResourceReferenceExpressionConverter();
var dynamicResource = converter.ConvertTo(value, typeof(MarkupExtension)) as DynamicResourceExtension;
return dynamicResource?.ResourceKey as string;
}
Теперь используйте его со своими TextBlock
:
var resourceKey = GetDynamicResourceKey(txMy, TextBlock.TextProperty);
Я адаптировал это решение из здесь .
Можно сделать это с помощью IVKM.Net. IVKM.NET включает приложение, названное ikvmc. Here’s документация для этого инструмента:
http://www.ikvm.net/userguide/ikvmc.html
Для использования его компилирует код Java в Банку.
Затем запускает ikvmc программу:
ikvmc myCode.jar
, Если Ваша банка содержит основное () функция, она будет преобразована в exe, который может быть выполнен на CLR. Иначе это будет преобразовано в dll’s. Для использования dll’s в проекте просто добавляют их как ссылки в Visual Studio и том же API, который был доступен Вам в Java, будет доступно в Вашем приложении .NET.
можно также включать IKVM.GNU.Classpath.dll dll от ikvmc и использовать стандартные библиотеки классов Java в приложении.
Взгляните на IKVM... он имеет инструменты, чтобы дать Вам некоторый уровень interop. Когда Вы говорите, что Java API, я принимаю Вас, хочет назвать некоторую функциональность от банки, а не просто выполнить его