example commandmanager wpf events mvvm attachedbehaviors

wpf - commandmanager - ¿Cómo se maneja un ComboBox SelectionChanged en MVVM?



icommand wpf (3)

Esta publicación es bastante antigua, pero desde que tengo el mismo problema. Así es como lo resolví (usando framework 4.0): la idea es usar System.Windows.Interactivity.

En el XAML:

<ComboBox ItemsSource="{Binding Items}"> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}"/> </i:EventTrigger> </i:Interaction.Triggers> </ComboBox>

Entonces solo necesita implementar SelectionChangedCommand en su viewmodel.

Para aquellos que realizan MVVM puro, ¿cómo se maneja un evento ComboBox SelectionChanged sin volver atrás al código?

Intenté, por ejemplo, AttachedBehaviors pero Event = "SelectedChanged" no es compatible:

<ComboBox> <ComboBoxItem Content="Test1"> <c:CommandBehaviorCollection.Behaviors> <c:BehaviorBinding Event="SelectionChanged" Command="{Binding SelectedChanged}" CommandParameter="MainBorder123"/> </c:CommandBehaviorCollection.Behaviors> </ComboBoxItem> <ComboBoxItem Content="Test2"/> <ComboBoxItem Content="Test3"/> </ComboBox>


No estoy seguro de si lo que busca es posible, pero la forma en que lo hago es simplemente vincular el SelectedItem a una propiedad en el modelo de visualización. Luego, dentro del conjunto de propiedades, llamo a cualquier código personalizado que quiera que ocurra, es decir, establezco otras propiedades basadas en la regla. Si necesito que el elemento seleccionado se vincule también a un objeto (para que otros controles encuadernados se actualicen) configuro esto también en el setter y envío una notificación.


Utilizaría un disparador de datos para activar un evento en un elemento de UI diferente, como "habilitar / deshabilitar, o visible / invisible"

Si desea que el elemento seleccionado muestre los datos del objeto en otros elementos de la interfaz de usuario, entonces utilizará el enlace de datos y establecerá el contexto de datos de los elementos de visualización de datos de la interfaz de usuario para vincular al elemento seleccionado actualmente en el cuadro combinado.