Я пытаюсь создать список серверов для просмотра в сети так, чтобы он отображал древовидную структуру, которая выглядит следующим образом:
-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
Моя ViewModel выглядит так:
...
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
мог связываться с ним. Я действительно хотел бы услышать идеи людей о том, как это сделать, хотя. Это кажется ужасно фундаментальным.