2

如何使用 C# 访问资源字典中的内容?

例如,这是我在 XAML 中的代码:

<system:String x:Key="NewGroup">New Group Name</system:String>

我想在 C# 中访问它:

    private void OnAddGroup(object sender, ExecutedRoutedEventArgs e)
    {

        BooksGroupInfo group = new BooksGroupInfo();
        group.GroupName = "New Group" + TheTabControl.Items.Count;
        TabItem tab = AddGroup(group);
        _currentLibrary.addGroup(group);
        _currentLibrary.CurrentGroup = group;

    }

我不想在 C# 中键入“新组”,而是想替换它并访问 XAML 中的资源字典。因此该命令将自动获取资源字典中的名称。

我尝试了几种解决方案,例如:

(System.String)this.FindResource("NewGroup"); 
Application.Current.Resources[typeof(System.String)]; 

等等......但他们似乎没有工作。

我正在使用 locbaml 进行本地化,它不解析 C# 上的文本/名称(或者我不知道如何),这是我认为可能的唯一解决方案。

4

1 回答 1

5

通常像这样使用FrameworkElement.FindResourcestring s = this.FindResource("NewGroup") as string;有效。具有键“NewGroup”的资源更有可能不存在于您的控件或窗口的范围内(无论this是什么)。您必须确保资源在那里。例如,如果您的资源来自另一个文件,您必须使用MergedDictionaries。您可以测试资源是否实际上可访问尝试从属于您的代码隐藏的 XAML 访问它,其中OnAddGroup定义。

我希望这是有道理的。

于 2009-11-17T12:58:24.470 回答