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; }
}