Как обработать включение / отключение кнопки, находящейся в шаблоне элемента ListView, используя MVVM? - PullRequest
0 голосов
/ 17 января 2012

У меня есть элемент управления ListView, у которого есть коллекции кнопок внутри itemtemplate, и я хочу обработать включение и отключение каждой кнопки в ViewModel.

1 Ответ

2 голосов
/ 17 января 2012

Мой лучший совет: используйте команду (я обычно использую Prism DelegateCommand или DelegateCommand<T>, вы можете загрузить Prism пакет через NuGet, что делает его буквально безболезненным).

Затем вы привязываете команду вашей кнопки к команде:

<Button Command="{Binding MyCommand}" />

Метод команды CanExecute определяет, будет ли кнопка включена или отключена.

Другой подход - предоставить свойство IsEnabled в ItemViewModel, а затем привязать к нему свойство IsEnabled на кнопке.

Если вам необходимо привязать свойство в родительской ViewModel, вы можете получить его из шаблона несколькими способами.

Вот некоторые из них:

<UserControl x:Class="MyControl" x:Name="this" ...>

<...>
  <DataTemplate>
    <Grid>
      <Button
        IsEnabled="{Binding DataContext.IsEnabled, ElementName=this}"/>
      <Button
       IsEnabled="{Binding DataContext.IsEnabled, 
 RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyControl}}}"
    </Grid>
  </DataTemplate>
</...>
</UserControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...