В этой статье мы рассмотрим вопрос интеграции Stimulsoft в WinUI-проекты.
WinUI - это инфраструктура пользовательского интерфейса (UI) для настольных приложений Windows, включая управляемые приложения, использующие C# и .NET, и собственные приложения, использующие C++ с Win32 API. WinUI 3 обеспечивает последовательный, интуитивно понятный и доступный опыт с использованием новейших шаблонов пользовательского интерфейса. Специального решения Stimulsoft для WinUI не существует, однако для встраивания системы отчетности можно воспользоваться компонентом Stimulsoft.Reports.Web.NetCore, а при необходимости интегрирования систем аналитики - Stimulsoft.Dashboards.Web.NetCore. Важно!
Генератор отчетов для .NET Core позволяет создавать отчеты любой сложности - от стандартных счетов-фактур до комплексных документов с параметрами, интерактивной сортировкой и детализацией. Однако, нативные визуальные компоненты, вьювер и дизайнер отчетов, для фреймворка WinUI отсутствуют, а компоненты из пакетов .NET Core работают непредсказуемо. Это обусловлено некоторыми особенностями самого фреймворка WinUI. Поэтому, на данный мы не рекомендуем встраивать вьювер или дизайнер в WinUI-проекты. В то же время, отчет может быть сгенерирован и отображен как результат его экспорта. Например, как PDF-файл или HTML. Предварительно должен быть установлен пакет SDK Windows App SDK C# Templates. В установщике Visual Studio этот SDK располагается в категории .NET Desktop Development.
Чтобы файл был доступен, необходимо установить его свойство "Build Action" в значение "Embedded resource".
MainWindow.xaml
MainWindow.xaml.cs
Таким образом, при разработке приложений Blank App, Packaged (WinUI 3 in Desktop) можно использовать системы отчетности и аналитики данных без использования вьювера и дизайнера отчетов. Более подробно об использовании .NET Core Stimulsoft можно узнать в документации. Активация продукта Stimulsoft.Reports.Web.NetCore доступна по подписке Reports.WEB, а Stimulsoft.Dashboards.Web.NetCore - по подписке Dashboards.WEB. Также, в онлайн магазине можно приобрести комплексное решение для систем отчетности и аналитики под различные платформы - подписку Stimulsoft Ultimate.
Генератор отчетов для .NET Core позволяет создавать отчеты любой сложности - от стандартных счетов-фактур до комплексных документов с параметрами, интерактивной сортировкой и детализацией. Однако, нативные визуальные компоненты, вьювер и дизайнер отчетов, для фреймворка WinUI отсутствуют, а компоненты из пакетов .NET Core работают непредсказуемо. Это обусловлено некоторыми особенностями самого фреймворка WinUI. Поэтому, на данный мы не рекомендуем встраивать вьювер или дизайнер в WinUI-проекты. В то же время, отчет может быть сгенерирован и отображен как результат его экспорта. Например, как PDF-файл или HTML. Предварительно должен быть установлен пакет SDK Windows App SDK C# Templates. В установщике Visual Studio этот SDK располагается в категории .NET Desktop Development.
ШАГ 1
Для начала следует создать и инициализировать новый проект WinUI – Blank App, Packaged (WinUI 3 in Desktop).ШАГ 2
При создании Blank App, Packaged (WinUI 3 in Desktop) уже содержит демо-проект, в который мы интегрируем наши инструменты. Во-первых, в этот демо-проект следует установить NuGet-пакет для системы отчетности - Stimulsoft.Reports.Web.NetCore или, если требуется также аналитика данных - Stimulsoft.Dashboards.Web.NetCore.ШАГ 3
Необходимо добавить файлы отчетов в проекты. Это могут быть файлы шаблонов отчетов или дашбордов (*.mrt, *.mrz, *.mrx), а также файлы построенных отчетов (*.mdc, *.mdz, *.mdx). Например, добавим шаблон отчета Invoice.mrt в папку Assets. Обратите внимание!Чтобы файл был доступен, необходимо установить его свойство "Build Action" в значение "Embedded resource".
ШАГ 4
Далее в файле MainWindow.xaml следует добавить разметку для отображения WebView2:MainWindow.xaml
<?xml version="1.0" encoding="utf-8"?>
<Window
x:Class="App1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="App1">
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button x:Name="button" HorizontalAlignment="Center" VerticalAlignment="Center"
Content="Click To Show Report"
Click="Button_Click" />
<WebView2 x:Name="webView" Grid.Row="1" />>
</Grid>
</Window>
ШАГ 5
На этом этапе нужно добавить в файл MainWindow.xaml.cs код загрузки и отображения отчета в WebView2 при обработке события "нажатие кнопки":MainWindow.xaml.cs
using System;
using System.IO;
using System.Reflection;
using Microsoft.UI.Xaml;
using Stimulsoft.Report;
using Stimulsoft.Report.Export;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace App1
{
/// <summary>
/// An empty window that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
button.Content = "Clicked";
// Load the report
var report = new StiReport();
var reportStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("App1.Assets.Christmas.mrt");
report.Load(reportStream);
// Export the report to PDF
report.Render();
using var pdfStream = new MemoryStream();
report.ExportDocument(StiExportFormat.Pdf, pdfStream, new StiPdfExportSettings());
var pdfString = Convert.ToBase64String(pdfStream.ToArray());
await webView.EnsureCoreWebView2Async();
// Display the PDF in a WebView2 control
webView.NavigateToString(
@$"<html><head></head><body><div><object type=""application/pdf"" width=""100%"" height=""100%"" data=""data:application/pdf;base64,{pdfString}""></object></div></body></html>");
}
}
}

Таким образом, при разработке приложений Blank App, Packaged (WinUI 3 in Desktop) можно использовать системы отчетности и аналитики данных без использования вьювера и дизайнера отчетов. Более подробно об использовании .NET Core Stimulsoft можно узнать в документации. Активация продукта Stimulsoft.Reports.Web.NetCore доступна по подписке Reports.WEB, а Stimulsoft.Dashboards.Web.NetCore - по подписке Dashboards.WEB. Также, в онлайн магазине можно приобрести комплексное решение для систем отчетности и аналитики под различные платформы - подписку Stimulsoft Ultimate.