【发布时间】:2011-04-04 03:40:37
【问题描述】:
Visual Studio 不允许我在 DLL 项目中创建 WPF 窗口是否有原因?
我通过在应用程序项目中创建一个窗口并将其复制到我的 DLL 项目中来“解决”它。 我还发现我可以创建一个 UserControl 并将基类更改为“Window”。
但如果我不得不这样做,那可能是因为我不应该这样做......
【问题讨论】:
Visual Studio 不允许我在 DLL 项目中创建 WPF 窗口是否有原因?
我通过在应用程序项目中创建一个窗口并将其复制到我的 DLL 项目中来“解决”它。 我还发现我可以创建一个 UserControl 并将基类更改为“Window”。
但如果我不得不这样做,那可能是因为我不应该这样做......
【问题讨论】:
在创建项目时确保项目类型为WPF User Control Library。
如果不是,那么只需编辑 csproj 文件并确保 Project/PropertyGroup 下的 <ProjectTypeGuids> 元素包含以下 GUID
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
另外,请确保您在项目中引用了 PresentationFramework 和 System.Xaml,否则您的代码中将不会获得任何 WPF。
【讨论】:
您可以尝试添加新的 WPF 用户控件项并将其更改为 Window。
添加新项目->WPF->用户控制
在 XAML 中:
将<UserControl>标签改为<Window>
在 CS 中:
将基类从 System.Windows.Controls.UserControl 更改为 System.Windows.Window。
【讨论】:
我是这样做的: 1)创建“WPF应用程序” 2) 删除 App.xaml 3) 更改Project properties -> Application Output type: to Class Library (原来有Windows Application)
否则会报错:
“库项目文件不能指定 ApplicationDefinition 元素”
“项目文件包含无效的属性值”
【讨论】:
Visual Studio 不允许您在 DLL 项目中创建 WPF 窗口是什么意思?你的意思是如果你右键项目,那里没有添加窗口的选项吗?
如果是这种情况,我认为这意味着您创建的项目类型不是 WPF 项目类型。不久前,当我想升级 WinForms 项目以改用 WPF 时,我遇到了类似的情况 - 请参阅 this question 了解更多信息。
【讨论】: