Pregunta

Estoy usando M-V-VM y tengo un comando en mi ViewModel llamado 'EntitySelectedCommand'.

Intenté que todos los elementos de un control de artículos activen este comando, pero no funciona.

Creo que es porque cada ítem 'datacontext' es el objeto individual al que está enlazado el ítem, en lugar del ViewModel?

¿Alguien puede indicarme la dirección correcta, por favor?

Saludos,

Andy

<ItemsControl  ItemsSource="{Binding Path=LinkedSuppliers}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Controls:EntityLabel Grid.Column="0" Grid.Row="0" Content="{Binding Name}" CurrentEntity="{Binding }" EntitySelected="{Binding EntitySelectedCommand}" ></Controls:EntityLabel>                
            <StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
¿Fue útil?

Solución

Tu sospecha es correcta. Tienes un par de opciones:

  1. Exponga también un EntitySelectedCommand de su modelo de vista hijo (es decir, cada Proveedor también tendría esta propiedad).
  2. Cambie su enlace para usar un RelativeSource para comunicarse y usar el DataContext del ItemsControl .

Otros consejos

Eche un vistazo a MVVM Toolkit ... ¡Tiene esta idea de una referencia de comando que puedes usar!

Cree un CommandRefrece como un recurso y luego solo use la extensión de marcado StaticResource ...

<c:CommandRefrence x:Key="EntitySelectedCommandRef" Command="{Binding EntitySelectedCommand}" />

y luego puedes usar

...Command="{StaticResource EntitySelectedCommandRef}" ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top