WPF ItemsControl - команда в ViewModel не запускается из ItemsControl

StackOverflow https://stackoverflow.com/questions/1410215

Вопрос

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

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

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

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

Ваше здоровье,

Энди

<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>
Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

...Command="{StaticResource EntitySelectedCommandRef}" ...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top