WPF ItemsControl - команда на ViewModel не запускается из ItemsControl - PullRequest
6 голосов
/ 11 сентября 2009

Я использую M-V-VM и у меня в моей ViewModel есть команда EntitySelectedCommand.

Я пытаюсь заставить все элементы в ItemsControl запустить эту команду, однако она не работает.

Я думаю, это потому, что каждый datacontext элемента - это отдельный объект, к которому привязан элемент, а не ViewModel?

Может кто-нибудь указать мне правильное направление, пожалуйста?

Приветствия

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>

Ответы [ 2 ]

13 голосов
/ 11 сентября 2009

Ваше подозрение верно. У вас есть несколько вариантов:

  1. Предоставьте также EntitySelectedCommand из вашей дочерней модели представления (т. Е. У каждого Supplier тоже будет это свойство).
  2. Измените привязку, чтобы использовать RelativeSource, чтобы протянуть руку и использовать DataContext родительского ItemsControl.
2 голосов
/ 11 сентября 2009

Взгляните на MVVM Toolkit ... У него есть представление команды, которое вы можете использовать!

Создайте CommandRefrece как ресурс, а затем просто используйте расширение разметки StaticResource ...

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

и позже вы можете использовать

...Command="{StaticResource EntitySelectedCommandRef}" ...
...