Использование функции экспорта WPF Infragistics Excel с MVVM

Я использую сетку данных Infragistics WPF и хочу использовать функции экспорта в Excel, которые предоставляет Infragistics. API для экспорта в Excel требует экземпляр сетки в качестве параметра. Это не очень дружелюбно к MVVM, так как я бы предпочел обрабатывать команду для экспорта данных в моем viewModel, который, на мой взгляд, не знал бы об экземпляре элемента управления datagrid.

Кто-нибудь знает о более дружелюбном механизме MVVM для экспорта в Excel (предпочтительно на основе коллекции, к которой привязана сетка) с использованием библиотек Infragistics?


person Dav Evans    schedule 07.02.2011    source источник
comment
этот вопрос дублируется на форумах по инфраструктуре здесь: community.infragistics.com/ форумы / p / 51952 / 270915.aspx # 270915   -  person Dav Evans    schedule 07.02.2011


Ответы (3)


Из-за обязательной ссылки на сетку, как вы знаете, вам не следует помещать логику в модель представления. Вам просто нужно обработать команду «Экспорт» в коде программной части. В этом нет ничего концептуально неправильного или анти-MVVM: эта конкретная логика просто зависит от представления.

person HappyNomad    schedule 07.02.2011

Сетка данных является частью представления, а функция экспорта в Excel - это функция этой сетки. ViewModel вообще не задействована. Это чистый случай активности просмотра. Рассматривая это как функцию чистого представления, вы не можете / не должны обрабатывать команду экспорта в ViewModel, а в самом представлении (код программной части). Завтра, если вы замените эту сетку данных другой сеткой данных, функция экспорта в Excel также пойдет, поскольку она предоставляется инфраструктурой. Следовательно, ваша модель представления ничего не должна делать. Однако, если вы хотите реализовать общую и независимую функциональность, которая не является специфической для инфраструктуры, вы можете сделать это в ViewModel (поскольку она является общей и не зависит от инфраструктуры).

person Pradeep    schedule 27.06.2011

просто ,

вы можете добавить кнопку в ur 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.");

    }
person Hatem Ahmed Gamil    schedule 08.01.2014