詳細ビューモデル/ビューに削除コマンドを実行する機能があるマスター/詳細アプリケーションがあります。
しかし、どうすればmaster-viewmodelのmaster-collectionに、detail-viewmodelが削除され、コレクションから削除する必要があることを通知できますか?
これは悪いデザインであり、master-viewmodelは詳細を削除する必要がありますか?または、イベントを介してこれを行う唯一のオプションですか?MVVMに準拠していますか?
ここに短縮されたコード
ViewModel
public class AllMetalTransactionViewModel : WorkspaceViewModel
{
private ObservableCollection<MetalTransactionViewModel> _metalTransactions;
public ObservableCollection<MetalTransactionViewModel> MetalTransactions
{
get { return _metalTransactions; }
set
{
if (Set("MetalTransactions", ref _metalTransactions, value))
{
}
}
}
private MetalTransactionViewModel _selectedMetalTransaction;
public MetalTransactionViewModel SelectedMetalTransaction
{
get { return _selectedMetalTransaction; }
set
{
if (Set("SelectedMetalTransaction", ref _selectedMetalTransaction, value))
{
}
}
}
}
public class MetalTransactionViewModel : WorkspaceViewModel
{
private RelayCommand _deleteCommand;
public RelayCommand DeleteCommand
{
get
{
return _deleteCommand
?? (_deleteCommand = new RelayCommand(
() =>
{
if (!IsNewUnit)
{
_dataService.DeleteMetalTransaction(_metalTransaction, CallbackDelete);
_dataService.CommitAllChanges(delegate(bool b, object o) { });
// How can I inform the AllMetalTransactionViewModel that I'm deleted? Event?
}
},
() => !IsNewUnit));
}
}
}
XAMLマスター
<View:MetalTransactionView Grid.Column="1"
DataContext="{Binding SelectedMetalTransaction}"></View:MetalTransactionView>
XAML-詳細
<Button DockPanel.Dock="Right" HorizontalAlignment="Right"
Padding="5" Content="Löschen" Margin="5" Width="80"
Command="{Binding Path=DeleteCommand}" />