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 のリソース ディクショナリにアクセスしたいと考えています。そのため、コマンドはリソース ディクショナリにある Name を自動的に取得します。

次のようないくつかのソリューションを試しました。

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

など...しかし、それらは機能していないようです。

私は locbaml を使用してローカリゼーションを行っていますが、C# でテキスト/名前を解析しません (または方法がわかりません)。それが可能だと思った唯一の解決策でした。

4

1 に答える 1

5

通常、FrameworkElement.FindResourceを次のように 使用しstring s = this.FindResource("NewGroup") as string;ます。キー「NewGroup」を持つリソースが、コントロールまたはウィンドウのスコープに存在しない可能性が高くなります (何であれthis)。リソースがそこにあることを確認する必要があります。たとえば、リソースが別のファイルからのものである場合は、MergedDictionariesを使用する必要があります。リソースが実際にアクセス可能かどうかをテストできます。定義されているコードビハインドに属する XAML からアクセスしてみてくださいOnAddGroup

それが理にかなっていることを願っています。

于 2009-11-17T12:58:24.470 に答える