У меня есть приложение WPF, и я работаю там с MVVM.
У меня есть ViewModel, где я держу 2 закрытых члена ObservableCollection (Test - это класс, который я создал).
Мое главное окно имеет TabControl, каждая вкладка связана с другой коллекцией ObservableCollection.
MVVM работает при первой загрузке (если isChecked элемента ObservableCollection равен true - checkBox проверен, а если нет - checkBox не проверен).
Я добавил флажок для SelectAll или UnselectAll.
При нажатии на него - я иду к определенной ObservableCollection и меняю все члены IsChecked соответственно на флажок SelectAll.
Проблема в том, что я не вижу его в графическом интерфейсе (первая загрузка сохраняется, и меняюсь, только если я нажимаю на каждый флажок вручную)
Должен ли я как-то "обновить" графический интерфейс?
Спасибо.
ViewModel.cs
private ObservableCollection<Test> _basicTests;
private ObservableCollection<Test> _advancedTests;
public ObservableCollection<Test> BasicTests
{
get { return _basicTests; ; }
set
{
_basicTests = value;
OnPropertyChanged("BasicTests");
}
}
public ObservableCollection<Test> AdvancedTests
{
get { return _advancedTests; ; }
set
{
_advancedTests = value;
OnPropertyChanged("AdvancedTests");
}
}
private void OnPropertyChanged(string propertyname)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyname));
}
}
}
MainWindow.xaml:
<TabControl x:Name="tabControl" Margin="0,135,0,0" TabStripPlacement="Left">
<TabItem Header="Basic">
<ListView x:Name="basicTestsList" ItemsSource="{Binding BasicTests}" Background="#FFE5E5E5">
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox x:Name="cbListOfBasicTests"
IsChecked="{Binding IsChecked}"
Content="{Binding Name}"
Margin="0,5,0,0"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</TabItem>
<TabItem Header="Advanced">
<ListView x:Name="advancedTestsList" ItemsSource="{Binding AdvancedTests}" Background="#FFE5E5E5">
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox x:Name="cbListOfAdvancedTests"
IsChecked="{Binding IsChecked}"
Content="{Binding Name}"
Margin="0,5,0,0"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</TabItem>
</TabControl>
Test.cs:
class Test
{
public string Name { get; set; }
public bool IsChecked { get; set; }
}