当我向它添加第二个对象时,未加载 UWP ResourceDictionary

UWP ResourceDictionary is not being loaded when I add a second object to it

我有一个用于 Windows 10 的 UWP 应用程序,其中插入了 MVVM Light。 我在 App.Resources 中存储了一个 ViewModelLocator。 当我的 App.Resources 中只有一个 ViewModelLocator 时,一切正常。

<Application.Resources>
    <viewModel:ViewModelLocator x:Key="Locator" />
</Application.Resources>

只要我添加一个字符串、转换器或类似的东西,应用程序就不会崩溃,但不再调用 ViewModelLocator 构造函数。 没有错误或异常被抛出,只是 ResourceDictionary 没有被加载或在加载期间失败。

<Application.Resources>
    <viewModel:ViewModelLocator x:Key="Locator" />
    <x:String x:Key="SampleString">Hello</x:String>
</Application.Resources>

如果我添加 Style、DataTemplate、Brush、Color - 一切正常。

以前没有注意到 Windows Phone 8、Silverlingt 或 WPF 上的这种行为。 将样式或对象移动到单独的 ResourceDictionaries 并使用 MergedDictionaries 加载它们没有帮助。

我想要 ResourceDictionary 中的对象列表,以便在应用程序启动时自动调用这些对象的所有构造函数。 请指教

P.S.: 即使两个类似的转换器也不起作用,而创建一个没有任何问题

<Application.Resources>
    <!--<viewModel:ViewModelLocator x:Key="Locator" />-->
    <converters:StringFormatConverter x:Key="StringFormat1" />
    <converters:StringFormatConverter x:Key="StringFormat2" />
</Application.Resources>

查找 ResourceDictionary 用法示例,发现类似问题:

尝试像这样将它们添加到资源字典中

<Application.Resources>
    <ResourceDictionary>
        <viewModels:ViewModelLocator x:Key="Locator"/>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="XAMLResources/Styles.xaml" />                
            <ResourceDictionary Source="XAMLResources/DataTemplates.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

如果您想查看完整示例,代码片段来自 GitHub https://github.com/AppCreativity/Kliva

上的存储库

您会注意到我们在 Styles.xaml 中添加了我们的转换器并且工作正常...

这都是因为惰性初始化。我做了一些实验并弄清楚了这张照片。我希望你能理解这个想法。 http://screencast.com/t/mxyBGBDuZ