mercredi 6 février 2019

WPF: bind my Checkbox IsChecked event to my model

So i have this ListView with ItemSource of my object and ListViewItem:

<GridViewColumn Header="Select" Width="45">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <CheckBox Command="{Binding SelectedInterfaceCommand}"
                                              CommandParameter="{Binding IsChecked, RelativeSource={RelativeSource Self}}">
                                    </CheckBox>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

ViewModelBase

public ViewModelBase()
        {
            SelectInterfaceCommand = new SelectedInterfaceCommand(this);
        }

And i try to catch my CheckBox IsChecked event inside my SelectedInterfaceCommand Command:

public class SelectedInterfaceCommand : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public ViewModelBase ViewModel { get; set; }

        public SelectedInterfaceCommand(ViewModelBase viewModel)
        {
            ViewModel = viewModel;
        }

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {

        }
    }

And my CanExecute and Execute never called.

I also try to this approach:

Inside my Object class i have this Property:

public bool IsSelected
        {
            get { return isSelected; }
            set
            {
                isSelected = value;
                OnStaticPropertyChanged();
            }
        }

XAML

<GridViewColumn Header="Select" Width="45">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <CheckBox                                                
                                        <CheckBox.IsChecked>
                                            <Binding Path="IsSelected" RelativeSource="{RelativeSource AncestorType={x:Type ListViewItem}}"/>
                                        </CheckBox.IsChecked>
                                    </CheckBox>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

And again this IsSelected setter never called.




Aucun commentaire:

Enregistrer un commentaire