Как получить динамическое имя ключа ресурса программно? - PullRequest
0 голосов
/ 19 января 2019

Моя программа загружается во время выполнения XAML-файла со следующим объявлением управления WPF.Используется метод XamlReader.Load (...).

<TextBlock Name="txMy" Text="{DynamicResource ResourceKey=MyTextFromRes}"/>

Он отлично работает и правильно показывает текст из динамического словаря.Теперь мне нужно знать NAME of KEY этого словаря ресурсов во время выполнения, потому что XAML-файл может быть различным.Мне нужно поиграть со связанными значениями словаря.

Как получить строку с именем ключа ресурса (" MyTextFromRes " в этом примере) во время выполнения в коде c #?

1 Ответ

0 голосов
/ 19 января 2019

Создайте следующий вспомогательный метод:

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);

Я адаптировал это решение с здесь .

...