Включение кнопки отключения на флажок поставить / снять флажок wpf mvvm - PullRequest
0 голосов
/ 10 августа 2010

У меня есть список чекбоксов в окне, в котором указаны некоторые заказываемые товары. Мне нужно сначала отключить кнопку «Порядок», когда загружаются окна, и включить ее после выбора / проверки некоторых элементов (флажков) и наоборот. Я связал свойство IsChecked флажка.

Редактировать Импорт из комментария OP: -

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

Вот код:

<ItemsControl ItemsSource="{Binding FavoriteItems}" Margin="80,0">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Grid>
        <StackPanel>
          <Grid>
            <CheckBox IsChecked="{Binding IsHouseholdSelected}" Content="{Binding SubCategoryName}" Grid.ColumnSpan="1" FontFamily="Calibri" FontWeight="Bold" />
          </Grid>
        </StackPanel>
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Ниже приведен пример кода, который может вам помочь.По сути, ключом здесь является то, что элементы в списке неявно уведомляют объект Command его родительского ViewModel, чтобы вызывать событие CanExecuteChanged при каждом изменении свойства IsChecked.(Также я использую здесь «DelegateCommand», который точно такой же, как и «RelayCommand»).

0 голосов
/ 10 августа 2010

Свяжите команду с кнопкой и реализуйте метод CanExecute, чтобы проверить состояние флажков, а также включите или отключите кнопку и используйте метод Execute, чтобы вызвать нужную функциональность для кнопки.

MVVM RelayCommand

CanExecute на MSDN

РЕДАКТИРОВАТЬ: Здесь приведен некоторый исходный код для реализации RelayCommand.Класс RelayCommand можно найти по первой ссылке, указанной выше.Я предполагаю, что вы знаете, как подключить DataContext к реализации ViewModel.

<StackPanel>
    <CheckBox Name="MyCheckBox" Content="Some CheckBox" 
              IsChecked="{Binding MyCheckBoxChecked}"/>
    <Button Content="Click me" Command="{Binding MyCommand}"/>
</StackPanel>

public class OrderViewModel
{
    private RelayCommand MyRelayCommand;

    public OrderViewModel()
    {
        MyRelayCommand = new RelayCommand(Execute, CanExecute);
        MyCheckBoxChecked = false;
    }

    public RelayCommand MyCommand
    {
        get { return MyRelayCommand; }
    }

    public bool MyCheckBoxChecked { get; set; }

    private bool CanExecute(object o)
    {
         // Here I'm just checking the property we've bound to but you can put
         // anything in here that will return a bool, including a check of any/all
         // of the checkboxes you may need to check 
         return MyCheckBoxChecked;
    }

    private void Execute(object o)
    {
        Console.WriteLine(@"Executing ...");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...