我有一個綁定到一個球員的屬性數據網格:實體框架 - 綁定到數據網格
<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