簡體   English   中英

如何以編程方式獲取動態資源密鑰名稱?

[英]How to get a dynamic resource key name programmatically?

我的程序在運行時XAML文件中加載以下WPF控件聲明。 使用XamlReader.Load(...)方法。

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

它可以完美工作並正確顯示動態詞典中的文本。 現在,我需要在運行時知道該資源字典的KEY的名稱,因為XAML文件可以多種多樣。 我需要使用相關的字典值。

如何在運行時以C#代碼獲取帶有資源鍵名稱的字符串(此示例中為“ MyTextFromRes ”)?

創建以下幫助程序方法:

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

我從這里改編了這個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM