我的程序在运行时使用以下WPF声明声明加载XAML文件。使用XamlReader.Load(...)方法。
<TextBlock Name="txMy" Text="{DynamicResource ResourceKey=MyTextFromRes}"/>
它工作完美,可以正确显示动态词典中的文本。 现在,我需要在运行时知道该资源字典的KEY的名称,因为XAML文件可以多种多样。我需要使用相关的字典值。
如何在运行时使用C#代码获取带有资源密钥名称的字符串(此示例中为“ MyTextFromRes ”)?
答案 0 :(得分:0)
创建以下帮助方法:
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);
我改编自here的解决方案。