0

好的,所以这个问题很棒而且很容易理解。我想以这种确切的方式实现StackPanela TreeViewItem。但是,当我尝试设置Orientation面板时,编译器抱怨实施IEnumerable.

这是我的TreeViewItem->StackPanel实现:

public static TreeViewItem newnode = new TreeViewItem()
{
       Header = new StackPanel {
           Orientation.Horizontal
       }
};

我以前没有使用IEnumerable过,但我尝试通过导入System.Collections然后将我的类设置为继承自来实现它IEnumerable。这样做之后,我得到一个编译器错误,说我的类没有实现System.Collections.IEnumerable.GetEnumerator()

在查看了一些在线资源后,我了解到其中显然IEnumerable<T>包含GetEnumerable().

首先,我在正确的轨道上吗?如果是这样,我该如何正确设置?

另外,如果我需要继承如果我不使用某种or IEnumerable<T>,我会放入什么?<>ListTemplate

感谢您的帮助。

所要求的确切编译器错误

'Project.Folder.Class' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'

4

1 回答 1

1

如果要初始化对象上的特定属性,则应Object Initialiser通过命名要初始化的属性来使用语法:

TreeViewItem newNode = new TreeViewItem()
{
    Header = new StackPanel { Orientation = Orientation.Horizontal}
};

在您的情况下,编译器告诉您不能StackPanel使用Collection Initializer语法初始化 a 。

这个:

new StackPanel 
{
    Orientation.Horizontal
}

将产生您所看到的错误:

Error   1   Cannot initialize type 'System.Windows.Controls.StackPanel' with a collection initializer because it does not implement 'System.Collections.IEnumerable'

因为您正在尝试初始化 StackPanel,就好像它是System.Windows.Control.Orientation对象的集合一样,例如List<Orientation>.

对象和集合初始化器

于 2013-08-02T14:54:34.023 回答