【发布时间】:2011-06-20 17:37:44
【问题描述】:
尝试做这样的事情......
public class MiniObject
{
public bool Checked { get; set; }
public String Caption { get; set; }
public ICollection<MiniObject> Content { get; set;}
}
<Window.Resources>
<local:MiniObject x:Key="RootItem" Caption="Item0" Checked="True">
<local:MiniObject.Content>
<local:MiniObject Caption="Item1" Checked="True">
</local:MiniObject>
<local:MiniObject Caption="Item2" Checked="True">
</local:MiniObject>
</local:MiniObject.Content>
</local:MiniObject>
</Window.Resources>
这当然不能返回错误:
Object of type 'WorkflowTest.MiniObject' cannot be converted to type 'System.Collections.Generic.ICollection`1[WorkflowTest.MiniObject]'.
有没有办法在 WPF 中做到这一点?如果是这样,我是否需要改变我的对象的形状,或者我可以简单地提供一个只有 WPF 使用的专用对象......
<Window.Resources>
<local:MiniObject x:Key="RootItem" Caption="Item0" Checked="True">
<local:MiniObject.Content>
<local:MiniObjectCollection>
<local:MiniObject Caption="Item1" Checked="True">
</local:MiniObject>
<local:MiniObject Caption="Item2" Checked="True">
</local:MiniObject>
</local:MiniObjectCollection>
</local:MiniObject.Content>
</local:MiniObject>
</Window.Resources>
【问题讨论】:
-
替换公共 ICollection
内容 { get; set;} 与 public List Content { get; set;} 有效,但我需要避免使用实际的实现。使用 IList 会导致同样的错误。 -
如果您不使用实际实现,您将如何用数据填充集合?
-
@John Gardner 我选择 ICollection 的原因是因为 MiniObject 在 ORM 中使用,我希望它只使用 IList 或 ICollection 等接口。我在这里编写的代码用于设计时数据和测试。我不想为了让设计师开心而单独编写一个类。
标签: c# wpf xaml collections