Pergunta

Estou usando o MV-VM e tenho um comando no meu viewmodel chamado 'entitySelectedCommand'.

Estou tentando colocar todos os itens em um itemsControl para disparar esse comando, no entanto, ele não está funcionando.

Eu acho que é porque o 'datacontext' de cada itens é o objeto individual para o qual o item está vinculado, em vez do viewmodel?

Alguém poderia indicar-me a direção correta, por favor?

Saúde,

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>
Foi útil?

Solução

Sua suspeita está correta. Você tem algumas opções:

  1. Expor um EntitySelectedCommand do seu modelo de visualização infantil também (ou seja, cada Supplier teria essa propriedade também).
  2. Altere sua ligação para usar um RelativeSource Para alcançar e usar o DataContext do pai ItemsControl.

Outras dicas

Dê uma olhada no MVVM Toolkit... Tem essa ideia de uma reflexão de comando que você pode usar!

Crie um CommandRefrece como um recurso e, em seguida, basta usar a extensão do StaticResource Markup ...

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

E então depois você pode usar

...Command="{StaticResource EntitySelectedCommandRef}" ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top