让DataGrid事件LoadingRow和UnloadingRow由行项目而不是父项处理

时间:2019-12-19 08:52:07

标签: c# wpf mvvm

我有一个用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(){}
}

0 个答案:

没有答案