私は最近SilverlightでMVVMパターンの使用を開始しました。正しく使用しているかどうかはわかりません。私のICommandのロジックはどこに置くのですか?
GUI
私は現在、株式市場部門のコンボボックスを持っているMAINVIEWを持っています。ユーザーがセクター(例えばENERGY)を選択し、追加ボタンをクリックすると、そのセクターの在庫のリストがリストボックスに表示されます。リストボックスの各在庫の横には、リストボックスから個々の在庫を削除するための削除ボタンがあります。
次のViewModelを実装しました。 (下はコードの一例です)
public class MainViewModel
{
public SectorViewModel CurrentSector
{
get;
set;
}
public string SelectedSector
{
get;
set;
}
public void AddSectorClickedCommand()
{
CurrentSector = new SectorViewModel(SelectedSector);
}
}
public class SectorViewModel
{
public ObservableCollection<StockViewModel> Stocks = new ObservableCollection<StockViewModel>();
public SectorViewModel(string sector)
{
List<Stocks> stocklist = StockProvider.GetStocks(sector);
for each (var s in stocklist)
{
StockViewModel svm = new StockViewModel(s);
svm.Remove+= { //Remove svm from Stocks collection logic
Stocks.add(svm);
}
}
}
私の質問は次のとおりです。 viewmodelでは、リストボックスの各行のRemoveボタンのコード実装を追加するのが最も良いでしょうか? [削除]ボタンをクリックすると、SectorViewModel.StocksコレクションからStockViewModelが削除されます。
私は現在、StockViewModelにRemoveClickedメソッドを追加しています(上記参照)。このコードはイベントをSectorViewModelに戻し、SectorViewModelのRemoveStockメソッドはStockViewModelをStockコレクションから削除します。
この削除機能を実装するより良い方法はありますか?私はMVVMが新しく、SectorViewModelがStockViewModelのイベントに登録する必要があるため、これがこの機能性を開発する最良の方法であるかどうかはわかりません。
私のデザインはこれがここで何が行われているので大丈夫と思われます。http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090016 – caa