我有一个绑定到 Players 属性的数据网格:
<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">
这个 Players 属性定义如下:
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;
}
但是......这是允许的还是你不应该做的事情?您是否应该只在属性的设置器中调用 RaiseProperyChanged 这也可以吗?
谢谢