Estoy ocupado creando mi primera aplicación MVVM en WPF.WPF: TreeViewItem vinculado a un ICommand
Básicamente el problema que tengo es que tengo un TreeView (System.Windows.Controls.TreeView) que he colocado en mi ventana de WPF, he decidido enlazar a un elemento ReadOnlyCollection de CommandViewModel, y estos los elementos consisten en DisplayString, Tag y RelayCommand.
Ahora en el XAML, tengo mi TreeView y he vinculado con éxito mi ReadOnlyCollection a esto. Puedo ver esto y todo se ve bien en la interfaz de usuario.
El problema ahora es que tengo que vincular el RelayCommand al Comando del TreeViewItem, sin embargo, por lo que puedo ver, TreeViewItem no tiene un Comando. ¿Esto me obliga a hacerlo en la propiedad IsSelected o incluso en el código detrás del método TreeView_SelectedItemChanged o hay una manera de hacerlo mágicamente en WPF?
Este es el código que tengo:
<TreeView BorderBrush="{x:Null}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<TreeView.Items>
<TreeViewItem
Header="New Commands"
ItemsSource="{Binding Commands}"
DisplayMemberPath="DisplayName"
IsExpanded="True">
</TreeViewItem>
</TreeView.Items>
e, idealmente, me encantaría ir:
<TreeView BorderBrush="{x:Null}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<TreeView.Items>
<TreeViewItem
Header="New Trade"
ItemsSource="{Binding Commands}"
DisplayMemberPath="DisplayName"
IsExpanded="True"
Command="{Binding Path=Command}">
</TreeViewItem>
</TreeView.Items>
¿Alguien tiene una solución que me permite usar la infraestructura RelayCommand que tengo.
Gracias muchachos, muy apreciados!
Richard
Creo que con la vista de árbol ASP.NET puede extender TreeView y TreeViewItem para agregar este tipo de funcionalidad. Cambiaría el TVI para agregar lo que necesitaba y luego anularía un método en TV para crear una nueva instancia de su TVI. No sé si el mismo patrón está disponible en la vista de árbol de WPF; Lo revisé pero no tan a fondo. – Will