将MergedDictionary添加到Application.Resources WPF时出错

时间:2011-04-12 17:06:50

标签: wpf mvvm mvvm-light

我正在使用MVVM灯创建一个“快速”WPF应用来测试一些Web服务。我有整个app runiing但需要将我的ResourceDictionary添加到应用程序资源。当我将以下内容添加到App.xaml时:

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/ResourceDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

我收到错误:

错误4程序''不包含适用于入口点的静态'Main'方法

我可以在此错误上找到的所有帮助都与设置为ApplicationDefinition的Build Action有关,这不是问题。

非常感谢任何帮助或指导。

TIA!

2 个答案:

答案 0 :(得分:10)

我在学习MVVM Light Toolkit时向App.xaml中的资源添加任何内容时遇到了同样的错误。问题是由<Application.Resources>中的错误字典声明引起的,与MVVM Light Toolkit无关。

应用程序的资源字典应该与此类似:

<Application ...>

    <Application.Resources>
        <ResourceDictionary>
            <!-- Global ViewModelLocator -->
            <vm:ViewModelLocator x:Key="Locator"
                                 d:IsDataSource="True" />

            <ResourceDictionary.MergedDictionaries>
                <!-- Global style -->
                <ResourceDictionary Source="Skin1.xaml" />
                <ResourceDictionary Source="Skin2.xaml" />
                <ResourceDictionary Source="Templates1.xaml" />
                <ResourceDictionary Source="Templates2.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

</Application>

通过这种方式,您可以在同一位置使用旧的Locator密钥获取工作的全局资源字典,并在列出的文件中声明字典中的新密钥。

正在加载的文件如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="{x:Type Button}">
        <Setter Property="Height" Value="28" />
        <Setter Property="Padding" Value="12,3" />
    </Style>

    ...

</ResourceDictionary>

答案 1 :(得分:1)

多么奇怪的错误 - 在将合并字典部分添加到App.xaml之前,您的程序是否已编译并运行?

可能值得检查项目的属性 - 听起来你可能将它设置为控制台应用程序 - 默认情况下它有一个静态主方法,它是应用程序的开始。

如果它没有设置为控制台应用程序 - 它仍然值得检查启动对象设置 - 这可以设置为一个特定的类,可以再次检查静态主方法作为入口点。

入口点基本上是指作为应用程序的一部分运行的第一件事。

HTH, 斯科特