0
У меня есть DataGrid, который отображает список видов спорта, и я хочу сохранить спорт при изменении свойств IsActive. Как я мог сделать это в стиле MVVM? Я использую среду MVVM Light.Как сохранить элемент из коллекции при изменении свойств?
Это мой DataGrid
<DataGrid ItemsSource="{Binding SportsList}" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Foreground="Black" Width="200" Header="Name" Binding="{Binding Name, Mode=TwoWay}" IsReadOnly="True" />
<DataGridCheckBoxColumn Width="60" Header="Is Active" Binding="{Binding IsActive, Mode=TwoWay}" IsReadOnly="False" />
</DataGrid.Columns>
</DataGrid>
Это как вид выглядит модель:
public class MainViewModel : ViewModelBase
{
private readonly ISportService _sportService;
private ObservableCollection<SportModel> sports;
public MainViewModel(ISportService sportService)
{
_sportService = sportService;
sports = new ObservableCollection<SportModel>();
LoadSportsCommand = new RelayCommand(LoadSports);
SaveSportCommand = new RelayCommand(SaveSport);
}
public ICommand LoadSportsCommand { get; private set; }
public ICommand SaveSportCommand { get; private set; }
public ObservableCollection<SportModel> SportsList
{
get
{
return sports;
}
}
private void SaveSport()
{
// Todo
}
private void LoadSports()
{
sports.Clear();
foreach (var sport in _sportService.GetAllSports())
{
sports.Add(new SportModel()
{
Name = sport.Name,
IsActive = sport.IsActive
});
}
}
}
Это SportModel:
public class SportModel : ObservableObject
{
public string Name { get; set; }
public bool IsActive { get; set; }
}