我正在使用Infragistics WPF数据网格,并且希望利用Infragistics提供的Excel导出功能。Excel导出的API需要一个网格实例作为参数。这不太符合MVVM的要求,因为我更愿意在我的viewModel中处理导出数据的命令,但是它并不知道我视图中的datagrid控件实例。
有没有人知道一种更符合MVVM的机制来使用Infragistics库进行excel导出(最好基于网格所绑定的集合)?
有没有人知道一种更符合MVVM的机制来使用Infragistics库进行excel导出(最好基于网格所绑定的集合)?
由于需要参考网格,如你所知,你不应该把逻辑放在视图模型中。你只需在代码后台处理导出命令即可。从概念上讲,并没有错误或反-MVVM的地方:这个特定的逻辑恰好是与视图相关的。
简单来说,
您可以在XAML中像这样添加按钮,并使用命令参数传递网格。
<Button Content="Print" HorizontalAlignment="Left" Margin="201,35,0,0" Grid.Row="2" VerticalAlignment="Top" Width="75" Height="29"
Command="{Binding PrintCommand, Mode=OneWay}" CommandParameter="{Binding ElementName=ParentC1DataGrid,Mode=OneWay}"
/>
在您的视图模型中添加此命令:
private ICommand m_PrintCommand;
public ICommand PrintCommand
{
get {
if (this.m_PrintCommand == null)
{
this.m_PrintCommand = new DelegateCommand<C1.WPF.DataGrid.C1DataGrid>(PrintData);
}
return m_PrintCommand;
}
}
private void PrintData(C1.WPF.DataGrid.C1DataGrid v)
{
////put exporting code here
PrintDialog printDlg = new PrintDialog();
printDlg.PrintVisual(v, "Grid Printing.");
}