我有一个绑定到一个球员的属性数据网格:实体框架 - 绑定到数据网格
<DataGrid HorizontalAlignment="Left" SelectedItem="{Binding CurrentPlayer}" Height="374" Margin="121,22,0,0" RowHeaderWidth="0" VerticalAlignment="Top" Width="836" ItemsSource="{Binding Players}" AutoGenerateColumns="false" IsReadOnly="True" SelectionMode="Single" IsEnabled="{Binding Editing, Converter={StaticResource InverseBooleanConverter}}" Grid.RowSpan="2" Grid.ColumnSpan="2">
此玩家属性的定义如下:
public List<Player> Players
{
get { return repository.Players.OrderBy(x => x.Firstname).ToList(); }
}
库包含从EF一个DBSet。
当我添加一名球员,我用这个代码:
private void SaveExecute(object parameter)
{
repository.SavePlayer(currentPlayer);
Editing = false;
}
我想什么现在要做的很简单:创建新的播放器时,数据网格应该刷新。它绑定到Players属性,但没有使用过setter,所以在那里调用RaisePropertyChange是不可能的。
我被困在这里。如何正确地绑定它,以便在调用SavePlayer() - 方法时,数据网格会更新并显示新玩家?
我找到的最简单的解决方案是调用RaisePropertyChanged(“Players”);在SaveExecute()方法:
private void SaveExecute(object parameter)
{
repository.SavePlayer(currentPlayer);
RaisePropertyChanged("Players");
Editing = false;
}
但...这是允许的或者是这个东西你不应该做?你是否应该在属性的setters中调用RaiseProperyChanged?
感谢
是的,我想使用MVVM模式。但我不明白如何正确使用它在这里... – Bv202