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プロパティにバインドされていますが、セッターは使用されていないため、RaisePropertyChangeを呼び出すことはできません。
私はここで立ち往生しています。SavePlayer()メソッドが呼び出されたときにデータグリッドが更新され、新しいプレーヤーが表示されるように、正しくバインドするにはどうすればよいですか?
私が見つけた最も簡単な解決策は、RaisePropertyChanged( "Players");を呼び出すことです。SaveExecute()メソッドの場合:
private void SaveExecute(object parameter)
{
repository.SavePlayer(currentPlayer);
RaisePropertyChanged("Players");
Editing = false;
}
しかし...これは許可されていますか、それともあなたがすべきではないことですか?プロパティのセッターでRaiseProperyChangedのみを呼び出す必要がありますか?これも問題ありませんか?
ありがとう