以下代码行
TreeView treeview = (TreeView)currentGroup.Content;
列出错误
'TreeView'是“
之间的含糊不清的引用System.Windows.Forms.TreeView
”和“System.Windows.Controls.TreeView
”
我知道原因,因为我需要明确说明要使用哪个引用,因为它们都有TreeView
,例如:
System.Windows.Controls.TreeView treeview = (System.Windows.Controls.TreeView)currentGroup.Content;
这是什么最佳做法?如果通过多种方法广泛使用,是否有另一种(更整洁的)方式来定义哪个引用TreeView
必须使用?
答案 0 :(得分:6)
例如,如果您特别使用System.Windows.Forms.TreeView
,则只需添加
using TreeView = System.Windows.Forms.TreeView;
进入你的using语句列表,默认情况下,当你使用System.Windows.Forms.TreeView
时,编译器会假设TreeView
。
答案 1 :(得分:3)
在using
声明中使用别名:
using WF = System.Windows.Forms;
using WC = System.Windows.Controls;
然后你可以简单地使用:
WF::TreeView tv1;
WC::TreeView tv2;
双冒号强制将前缀视为命名空间,因此即使您创建了一个名为WF的类,该别名仍然有效。
答案 2 :(得分:1)
由于您正在投射,您还可以使用 var 关键字保存一些输入内容。
var treeview = (System.Windows.Controls.TreeView)currentGroup.Content;
答案 3 :(得分:1)
简易解决方案:var treeview = currentGroup.Content;
解决方案,如果您无法使用var
:在文件的顶部将using
System.Windows.Controls;
更改为using cntrl =
System.Windows.Controls;
,这会产生别名,因此这会将原始示例更改为
cntrl.TreeView treeView;
treeView = (cntrl.TreeView)currentGroup.Content;
如果必须投出Content
,您可以将两者合并到
var treeView = (cntrl.TreeView)currentGroup.Content;