0

在我的 VSTO 应用程序级单词插件中,我试图将 Grid 添加到 UserControl 以使其布局连贯。

但是,当我尝试声明网格时,Visual Studio 抱怨找不到类型或命名空间“网格”。我通过添加 PresentationFramework 程序集作为项目引用并导入 System.Windows.Controls 解决了这个错误,但现在我有一个更大的问题:Visual Studio 抱怨“UserControl”是“System.Windows.Controls.UserControl”之间的模糊引用”和“System.Windows.Forms.UserControl”。

我检查了我的 .cs 文件的顶部,发现它已经默认导入 System.Windows.Forms,现在它也在导入 System.Windows.Controls。

我想知道为什么 VSTO 项目首先默认导入 System.Windows.Forms 而不是 System.Windows.Controls,以及这两个命名空间之间的主要区别是什么,因为在我的 WPF 应用程序中我使用 System.Windows.Controls。谢谢!

4

1 回答 1

1

从起源 VSTO 是一组基于表单的工具,而基于 XAML 的 UI 选项仅来自后来的几年。显然,您仍然可以使用 System.Windows.Forms 并在您的 XAML 应用程序中引用它,因此在添加 XAML 引用时,如果两者都存在,则会出现一些模棱两可的项目(我总是倾向于遇到 XAML 和 Forms MessageBox 歧义接口)并且您需要为模棱两可的项目加前缀。

我所做的就是尝试在 XAML 方面做到完整,或者决定转移到 Forms 方面。

可能 VSTO 是一种较旧的技术,项目模板从一开始就基于 Forms 库,但您可以自由地完全进入 XAML 世界。今天我自己的解决方案完全基于 XAML,但我时不时地回退到 Forms(例如做一个快速演示)。

所以这只是一种技术选择,而 VSTO 可以追溯到很久以前,所以它从 Forms 开始。如果您愿意(我有偏见,我喜欢该技术)或坚持使用 Forms 技术,请使用新的、闪亮的 XAML 技术。你可以同时使用它们。

于 2016-09-01T09:19:21.537 回答