在我的VSTO应用程序级单词addin中,我正在尝试将一个Grid添加到UserControl以使其布局连贯。
但是,当我尝试声明网格时,Visual Studio会抱怨无法找到类型或命名空间“Grid”。我通过添加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。谢谢!
答案 0 :(得分:1)
来自原点VSTO是基于表单的工具集,基于XAML的UI选项仅适用于以后的年份。显然你仍然可以使用System.Windows.Forms并在你的XAML应用程序中引用它,所以当添加XAML引用时,如果两者都存在(我总是倾向于遇到XAML和Forms MessageBox歧义接口),那么有一些不明确的项目,你需要加上不明确的项目前缀。
我所做的是尝试在XAML方面完整或决定转移到表单方面。
可能VSTO,现在是一个稍微老旧的技术,项目模板是基于开始的Forms库,但你可以自由地完全进入XAML世界。我今天自己的解决方案完全基于XAML,但我不时地回到Forms(例如做一个快速演示)。
所以这只是一种技术选择,VSTO可以追溯到很长一段时间,所以它始于Forms。如果您愿意,请使用新的闪亮的XAML技术(我有偏见,我喜欢这种技术)或坚持使用Forms技术。你可以同时使用它们。