VS2012 - 将现有的WPF用户控件添加到项目中

4
这似乎应该很简单,但我却无法实现它。假设我有一个名为uc1的用户控件的现有项目。我想在另一个项目中使用这个用户控件。我右键单击解决方案资源管理器中的项目名称,选择添加>现有项,将下拉列表更改为所有文件,并选择文件uc1.xaml和uc1.xaml.vb。当然,这会将文件添加到项目中,但是xaml文件和代码文件之间没有关联,也没有办法使用控件。正确的做法是什么?
4个回答

13

Reed的回答是一个好的架构方法。如果您计划创建一个控件,您将在许多项目中重复使用,则最好使用控件库。

不过,在某些情况下,您的原始问题也是有效的。假设您有一些从互联网上下载并解压到驱动器上的源代码。该项目包含一个.XAML文件及其链接的.vb文件,您想将其添加到项目中。

正如您所看到的,Visual Studio Solution Explorer在使用“添加项目”对话框添加文件时不会链接这些文件。我认为这是一个错误。我发现如果重新加载项目,则会添加关联。

这里是一个我使用的解决方法。我将文件从Windows资源管理器/文件资源管理器拖放到Solution Explorer中的项目上。第一次这样做就可以正确地工作。 输入图像描述


谢谢您的建议,但我已经尝试过了,但对我没有用。当我将文件从Windows资源管理器拖到解决方案资源管理器中时,我立即会看到一个禁止标志,并且这些文件无论如何都不会复制过来。我正在使用VS2012 Pro,如果有什么区别的话。 - user10001110101
我有VS2012 Ultimate,但我怀疑这会有什么区别。 - Walt Ritscher
你是在项目节点上放弃了吗?我猜你在放弃时没有调试应用程序。解决方案资源管理器已经支持拖放多年了。 - Walt Ritscher
在 VS 2019 中,我必须将文件拖放到解决方案资源管理器中的项目本身(在此情况下为 Wpf2),拖放到空白处不起作用。 - Shahin Dohan

1
当然,这会将文件添加到项目中,但是xaml和代码文件之间没有关联,并且无法使用控件。那么正确的做法是什么呢?
通常,您需要引用其他项目,并直接使用UserControl。
这样可以构建一个带有UserControl的单个项目,并在多个项目中使用生成的程序集(DLL)而不重复代码

感谢您的回复。如果我理解正确的话,我应该创建一个新的WPF自定义控件库项目来容纳所有的用户控件,然后只需从其他项目中引用已编译的dll文件即可?这样我就可以访问xaml并在创建控件时可视化它了? - user10001110101
@dkirkdrei,您可能想要使用“WPF用户控件库”,而不是“自定义控件库”,但是没错。 - Reed Copsey
是的,虽然使用WPF用户控件库而不是自定义控件库会更好。 - Walt Ritscher
是的,你说得对!如果我在我的项目提供中再往下看一点就好了 ;) 感谢你的帮助! - user10001110101

1
如果您想重复使用您的用户控件,您需要创建一个新项目并从可用项目列表中选择“类库”。编译后,此类库可以轻松地被任何数量的其他项目和解决方案使用,只需添加对构建此类库时创建的已编译DLL的引用即可。
编辑:如其他答案所述,它是“WPF UserControl Library”,而不是简单的“Class Library”...

0

您只需要添加.xaml文件,Visual Studio应该会自动添加代码后台(嵌套)。我曾经遇到过这种情况无法正常工作,正如@Walt Ritscher所说,这可能是一个错误。

我发现简单地重新启动Visual Studio并重新加载我的解决方案就可以解决问题。


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