Estoy tratando de producir una lista de servidores para explorar en una red tal que produce una vista de árbol que se parece a esto:La unión a un solo elemento dentro de un 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
Mi modelo de vista es el siguiente:
...
public Server LocalServer;
public ObservableCollection<Server> RemoteServers;
...
Entonces, ¿cómo hace uno para la construcción de la lista en XAML con una unión a un único objeto y una lista de objetos? Yo podría estar pensando en ello por completo el camino equivocado, pero lo que mi cerebro realmente quiere ser capaz de hacer es algo como esto:
<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>
Siento que debe haber un elemento fundamental que me falta que me mantiene de poder especificar lo que quiero aquí. Ese solo artículo tiene hijos. Intenté usar un ContentPresenter, pero por alguna razón, no era expansible aunque recogió el HierarchicalDataTemplate
para mostrar el título correctamente.
actualización
Así que por ahora, he descubierto una propiedad en el modelo de vista que envuelve el elemento individual en una colección de modo que un CollectionContainer
puede unirse a ella. Sin embargo, me gustaría escuchar las ideas de la gente sobre cómo hacer esto. Parece terriblemente fundamental.
Antes de encontrar esta cuestión de forma, que estaba tratando de resolver esto también, y terminé haciendo lo mismo .. agregué una propiedad de colección en mi modelo de vista. –