我有一个用MVVM模式填充的DataGrid,这意味着我给它一个ViewModels列表以行显示。这些行VM具有需要以非平凡的方式加载的图片(然后显示在网格中)。现在,使用LoadingRow和UnloadingRow事件可以很好地工作,在这里我可以简单地调用Row-VM的适当功能(我从事件参数中将其获取为DataContext)。但是,这目前仅在后面的代码中有效,而实际上不是MVVM。
我可以使用一些其他特殊代码从Row-VM上一层的VM调用Command,然后再使用适当的Row-VM并调用该函数,但这并不是真正的MVVM,因为行VM来加载这些图像,而不是上面的VM(这基本上也会破坏其他模式)。
我是否可以通过某种方式使相应的VM使用MVVM处理LoadingRow / UnloadingRow,还是可以使用其他一些行级事件来加载和卸载这些图像?
[编辑]添加了代码段以进行澄清。
<!--The UserControl has MainViewModel as DataContext-->
<DataGrid ItemsSource="{Binding RowVMs}"
LoadingRow="DataGrid_OnLoadingRow"
UnloadingRow="DataGrid_OnUnloadingRow">
<!--The two events happen on the MainViewModel level, but not on the individual RowVM level, where I need them-->
</DataGrid>
public class MainViewModel
{
//List of potentially several hundred rows
public ObservableCollection<RowVM> RowVMs {get;set;}
}
public class RowVM
{
//Code to load and unload images to be displayed in the row
public void LoadImage(){}
public void UnloadImage(){}
}