2009-11-17 84 views
2

如何使用C#訪問資源字典中的內容?訪問系統:字符串資源字典C#中的XAML

例如,這裏是我的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

通常使用​​這樣的:string s = this.FindResource("NewGroup") as string;的作品。使用「NewGroup」關鍵字的資源更可能不存在於您的控件或窗口的範圍內(無論this是什麼)。你必須確保資源在那裏。例如。如果您的資源來自其他文件,則必須使用MergedDictionaries。您可以測試資源實際上是否可訪問,嘗試從屬於您的代碼隱藏的XAML中獲取資源,其中OnAddGroup是definde。

我希望這是有道理的。

+0

你好..謝謝你的回覆,但我仍然無法得到它的工作。對不起有點新在這.. –

+0

我在代碼中添加了這個,它不接受第4行..我不知道如果我做得正確,只是添加了資源字典的來源.. –

+0

ResourceDictionary resourceDictionary = sender as ResourceDictionary ; resourceDictionary.Source = new Uri(「Source.xaml」,UriKind.Relative); BooksGroupInfo group = new BooksGroupInfo(); group.GroupName =(string resourceDictionary = this.FindResource(「NewGroup」)as string)+ TheTabControl.Items.Count; TabItem tab = AddGroup(group); _currentLibrary.addGroup(group); _currentLibrary.CurrentGroup = group; –