0

以下は、WPF アプリケーションの ResourceManager をインスタンス化するスタートアップ コードです。これを xaml で利用できるようにしたい場合、リソース ディクショナリに入れますか? ObjectProvider を使用しますか? 他の何か?

WPF アプリでオブジェクトのインスタンス化の方法を別の方法より優先する理由はありますか?

乾杯、
ベリル

var asm = Assembly.Load("SampleApp.Common");
var resourceMan = new ResourceManager("SampleApp.Common.Resources.SupportedCultures", asm);
DataContext = new MainWindowVm(resourceMan);
4

1 に答える 1

1

私の意見では、アプリケーションの存続期間中に辞書を置き換える必要がない場合は、静的クラスが最適なソリューションです。

public static class SampleAppCommonResources
{
    private static ResourceManager _Manager;

    public static ResourceManager Manager
    {
        get
        {
            if (_Manager == null)
            {
                var asm = Assembly.Load("SampleApp.Common");
                _Manager = new ResourceManager("SampleApp.Common.Resources.SupportedCultures", asm);
            }

            return _Manager;
        }
    }
}

XAMLの使用法:

<Menu Tag="{x:Static local:SampleAppCommonResources.Manager}">

マルチスレッド環境がある場合は、たとえば_Managerを使用Interlocked.CompareExchangeして割り当てる必要があります。

于 2012-04-16T20:10:03.027 に答える