I am using checkedListbox control form the wpfToolKit, I want to check all the checkboxes in the list when I press a button but its not working.
Xaml
<xctk:CheckListBox Command="{Binding CheckBoxClickedCommand}"
ItemsSource="{Binding ChosenFiles, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Name"/>
ViewModel
public ObservableCollection ChosenFiles { get; set; }
Model
public class ChosenFile{
public string FullPath { get; set; }
public string Name { get; set; }
public bool IsChecked { get; set; }
}
I want my checkedListbox to update when I change the IsChecked property can it be done with this control?
Here is how you can do it
First redefine the 'ChosenFile' class as below to wire with INotifyPropertyChanged interface
public class ChosenFile : INotifyPropertyChanged
{
private string _fullPath;
public string FullPath
{
get { return _fullPath; }
set
{
_fullPath = value;
OnPropertyChanged();
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged();
}
}
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
OnPropertyChanged();
}
}
private void OnPropertyChanged([CallerMemberName] string propName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
Window.xaml
<Button Command="{Binding CheckBoxClickedCommand}" Width="100"> Check All</Button>
<xctk:CheckListBox ItemsSource="{Binding ChosenFiles}" DisplayMemberPath="Name" SelectedMemberPath="IsChecked" />
On the code behind, on the 'CheckBoxClickedCommand' execute method, do this
foreach (var rec in ChosenFiles)
rec.IsChecked = true;