App.XAML你在哪里?

时间:2010-09-16 10:55:28

标签: wpf

我是WPF的新手。创建了一个新的WPF UserControl。看到有些人使用app.xaml文件来设置内部应用程序级别的资源。

我的解决方案包括WinForm和WPF UserControl。我没有看到任何app.xaml文件。

如何进行?

5 个答案:

答案 0 :(得分:4)

App.xaml与WPF应用程序相关联。如果你只有一个UserControl,那么就没有应用程序可以成为它的一部分吗?

创建一个WPF应用程序,您将拥有一个App.xaml来放置应用程序级资源。

出于兴趣,如果您使用的是WPF用户控件,为什么还要使用WinForm?

编辑:重复我的评论:当您不创建WPF应用程序时,您将无法顺利获得 WPF应用程序资源。

编辑:正如安东尼布里恩的回答所指出的那样,你似乎可以破解它 - 但如果你能帮助它,我强烈建议反对这类事情。从根本上说,你正在反对平台的期望 - 而且这绝不是一个好的情况。

答案 1 :(得分:4)

可以在WinForms应用程序中拥有应用程序范围的WPF资源。看http://www.wpftutorial.net/AppLevelResourcesWinForms.html

答案 2 :(得分:3)

您需要创建WPF或Silverlight应用程序才能获取该文件 您实际上在Winforms应用程序中托管WPF控件

答案 3 :(得分:3)

如果您创建了一个WinForm项目,它将没有app.xaml。

改为创建一个WPF项目。

答案 4 :(得分:2)

本文详细解释了如何在托管/互操作方案中使用应用程序范围的资源:

http://drwpf.com/blog/2007/10/05/managing-application-resources-when-wpf-is-hosted/

我选择的解决方案路径(来自文章)是将App.xaml包含为页面元素

修改项目文件:

<Page Include="App.xaml" />
<Compile Include="App.xaml.cs">
  <DependentUpon>App.xaml</DependentUpon>
  <SubType>Code</SubType>
</Compile>

添加代码:

public App()
{
    InitializeComponent();
}

public static void EnsureApplicationResources()
{
    if (Application.Current == null)
    {
        // create the Application object
        new App();
    }
}

完整的详细信息在文章中。