Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作Visual Studio 2010';s";添加用户控件“;创建WPF控件?_Wpf_Visual Studio_User Controls_Visual Studio Express - Fatal编程技术网

如何制作Visual Studio 2010';s";添加用户控件“;创建WPF控件?

如何制作Visual Studio 2010';s";添加用户控件“;创建WPF控件?,wpf,visual-studio,user-controls,visual-studio-express,Wpf,Visual Studio,User Controls,Visual Studio Express,我有一个使用“类库”项目模板创建的类库。如果在解决方案资源管理器中右键单击此库并选择“添加>用户控件”,VisualStudio将添加WinForms用户控件。这不是我想要的--我想要“添加>用户控件”来添加WPF用户控件 我已经添加了对WPF程序集(WindowsBase、PresentationFramework和PresentationCore)的引用,我在这个库中已经有了一些WPF用户控件,所有的东西都可以编译。我的库没有对WinForms程序集(System.Drawing和Syste

我有一个使用“类库”项目模板创建的类库。如果在解决方案资源管理器中右键单击此库并选择“添加>用户控件”,VisualStudio将添加WinForms用户控件。这不是我想要的--我想要“添加>用户控件”来添加WPF用户控件

我已经添加了对WPF程序集(WindowsBase、PresentationFramework和PresentationCore)的引用,我在这个库中已经有了一些WPF用户控件,所有的东西都可以编译。我的库没有对WinForms程序集(System.Drawing和System.Windows.Forms)的引用。但是显然,对于VisualStudio来说,正确的引用还不够,因为当我尝试添加>用户控件时,它会将WinForms引用添加到我的项目中,然后创建一个WinForms用户控件

我可以将WPF用户控件添加到我的WPF应用程序项目中,然后将其移动到我的库中。但这是一种痛苦,我宁愿让它在第一时间正常工作

我认为我的.csproj文件中可能缺少某种神秘的XML元素,它告诉VisualStudio默认使用哪个设计器,如果我使用正确的神秘GUID添加正确的XML元素,它将开始正常工作。如果我能创建一个新的WPF控件库,我可能会比较这两个项目文件并找出答案。但是,我使用的是Visual C#Express,它没有WPF控件库项目的模板,所以我在那里运气不佳


我需要对类库的.csproj文件执行什么操作,以便VS2010的“添加”>“新用户控件”将添加WPF UserControl?

项目文件中的子项目类ID会影响Visual Studio上下文菜单以及项目的一般行为。最简单的方法是将项目重新创建为:

  • WPF用户控制库
而不是“类库”。如果您已经通过在文本编辑器(如Visual Studio本身)中打开“.csproj”文件,手动创建了要在子项目类ID中编辑的项目,则这是可能的,但这样做很容易造成比您修复的更大的损坏

我相信,但尚未测试另一种类型的库是否也可以工作:

  • WPF自定义控件库
它用于保存除
UserControl
对象之外的其他类型的控件,但作为WPF子项目类型,上下文菜单也可以正确地用于所描述的用例

编辑:

为了完整性,我刚刚测试了如何手动添加子项目guid。将此行添加到.csproj文件中的第一个
PropertyGroup

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

...
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

未使用Visual Studio Express进行测试。

正如我在问题中提到的,Visual C#Express没有“WPF自定义控件库”的项目模板。它也没有“WPF用户控制库”。@JoeWhite:编辑我的答案。