【发布时间】:2012-01-22 14:31:39
【问题描述】:
我最近开始在 silverlight 中使用 MVVM 模式,但我不确定我是否正确使用它。
图形界面
我目前有一个包含股市板块组合框的 MainView。当用户选择一个部门(例如能源)并单击添加按钮时,该部门的股票列表将显示在列表框中。列表框中每只股票的旁边都有一个删除按钮,可让您从列表框中删除单个股票。
我已经实现了以下 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);
}
}
}
我的问题是;在哪个视图模型中最好为列表框中每一行的删除按钮添加代码实现? Remove 按钮应该从 SectorViewModel.Stocks 集合中删除 StockViewModel。
我目前已将 RemoveClicked 方法添加到 StockViewModel(如上所示)。此代码将一个事件返回给 SectorViewModel,并且 SectorViewModel 的 RemoveStock 方法从 Stock 集合中删除 StockViewModel。
有没有更好的方法来实现这个删除功能?我是 MVVM 新手,不确定这是否是开发此功能的最佳方法,因为 SectorViewModel 需要注册到 StockViewModel 的事件。
【问题讨论】:
-
我的设计似乎没问题,因为这也是这里所做的msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090016
标签: silverlight mvvm