实例化 WPF 对象并使其可用



下面是一些启动代码,用于实例化 WPF 应用程序的 ResourceManager。如果我希望通过 xaml 提供它,我会把它放在资源字典中吗?使用 ObjectProvider?别的?

是否有理由在 WPF 应用中首选一种对象实例化方法而不是另一种方法?

干杯
贝瑞尔

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

在我看来,如果你不需要在应用程序生命周期内替换字典,静态类是最好的解决方案:

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}">
例如,如果

存在多线程环境,则应使用 Interlocked.CompareExchange 分配_Manager

最新更新