如何使用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#中输入“New Group”,而是想替换它并在XAML的资源字典中访问。因此该命令将自动获取资源字典中的Name。
我尝试了几个解决方案,如:
(System.String)this.FindResource("NewGroup");
Application.Current.Resources[typeof(System.String)];
依旧...... 但他们似乎没有工作。
我正在使用locbaml进行本地化,它不解析C#上的文本/名称(或者我不知道如何),这是我认为唯一可行的解决方案。
答案 0 :(得分:5)
通常使用FrameworkElement.FindResource这样:string s = this.FindResource("NewGroup") as string;
有效。具有键“NewGroup”的资源更可能不存在于您的控件或窗口的范围内(无论this
是什么)。您必须确保资源在那里。例如。如果您的资源来自另一个文件,则必须使用MergedDictionaries。您可以测试资源是否实际无法访问,尝试从属于您OnAddGroup
定义的代码隐藏的XAML访问它。
我希望这是有道理的。