如何将 WPF 窗口添加到类库项目

8

今天我遇到了一个问题,我想将一个WPF窗口添加到我的现有类库项目中,但在“添加新项”列表中找不到它。

我找到了解决方法,并想在这里发布,因为我在其他地方找不到它。


在发布自问自答的问题之前,请确保没有重复的内容。现在,您需要通过这个7年前的答案来证明您不是剽窃者。 - Sinatr
@Sinatr 我确实搜索了,但没有找到。可以标记为重复。 - CathalMF
1个回答

27

解决方法是用记事本这样的文本编辑器打开.csproj文件。

在第一个PropertyGroup xml标签下添加以下行。

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

保存更改并重新加载项目。现在该项目可以像正常情况下一样添加 WPF 窗口。

完整的 PropertyGroup xml 应该类似于以下内容:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{11EE2F8C-DFCF-451D-BA3E-84A4FB858848}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>TestApp</RootNamespace>
    <AssemblyName>TestApp</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
  </PropertyGroup>

2
这是完全正确的。我也不得不这样做。此外,如果您从Winform中打开窗口,则需要在调用myWindow.ShowDialog()之前添加此行ElementHost.EnableModelessKeyboardInterop(myWindow);以便窗口可以正确地从用户处获取键盘输入。该方法位于 System.Windows.Forms.Integration 命名空间中。如果不知道这一点,可能会浪费您几个小时的时间! - Nik
2
不要忘记添加引用 > 程序集 > 选择 System.Xaml > 点击确定。 - Nur Hidayah Roslee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接