我试图生产服务器的列表,在网络上浏览,使得它产生一个树状图,看起来像这样:绑定到一个单一的元素的CompositeCollection内
-Local Server
- Endpoint 1
- Endpoint 2
-Remote
- <Double-click to add a server...>
- Remote Server 1
- Endpoint 1
- Endpoint 2
- Remote Server 2
- Endpoint 1
- Endpoint 2
我的视图模型看起来是这样的:
...
public Server LocalServer;
public ObservableCollection<Server> RemoteServers;
...
那么,要如何去约一个绑定到一个单一的对象和对象的列表构建在XAML列表?我可能会完全考虑了错误的方式,但什么我的大脑真的希望能够做的是这样的:
<CompositeCollection>
<SingleElement Content="{Binding LocalServer}">
<!-- ^^ something along the lines of a ContentPresenter -->
<TreeViewItem Header="Remote">
<TreeViewItem.ItemsSource>
<CompositeCollection>
<TreeViewItem Header="<Click to add...>" />
<CollectionContainer Collection="{Binding RemoteServers}" />
</CompositeCollection>
</TreeViewItem.ItemsSource>
</TreeViewItem>
</CompositeCollection>
我觉得必须有一个基本要素我缺少这让我从能够在这里指定我想要的。那单个项目有孩子。我曾尝试使用ContentPresenter,但无论出于何种原因,即使它拾起HierarchicalDataTemplate
以正确显示标题,它仍无法展开。
更新
所以现在,我已经暴露在一个包装的单个元素的集合,使得CollectionContainer
可以绑定到它的视图模型的属性。不过,我真的很想听到大家关于如何做到这一点的想法。这似乎非常重要。
之前发现这太问题,我试图弄清楚这一点,并最终做同样的事情..在我的视图模型中添加了一个集合属性。 – 2010-04-14 21:55:48