Richard.Ma 发表于 2021-8-20 11:41:52

使用WebView2开发包括SpreadJS和Wijmo的混合应用

本帖最后由 Richard.Ma 于 2023-4-28 12:25 编辑

      在之前,如果要在.NET平台的客户端开发中嵌入web控件,我们只能选择基于 Internet Explorer 的 WebBrowser 控件,由于IE本身对HTML5的支持较差,不再适合现代 Web 内容。
      微软推出了WebView2,一个全新的浏览器控件,可以用基于 Chromium的 Microsoft Edge 来呈现 Web 内容(HTML / CSS / JavaScript)。在Win7以上的系统中可以直接运行而无需其他配置。



WebView2 的优势
[*]能充分利用 web 生态系统中存在的前端框架、类库、工具以及开发人员
[*]将 Web 组件分片添加到应用。
[*]可以访问完整的本机 API 集。
[*]可以方便的和本机硬件进行本地交互,开发出一体化的混合应用



在WPF中使用WebView2显示Wijmo和SpreadJS

[*]创建WPF项目
[*]通过Nuget添加WebView2
[*]在MainWindow.Xaml文件中添加WebView
<Window x:Class="WpfWijmo.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:local="clr-namespace:WpfWijmo"
      xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
      mc:Ignorable="d"
      Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
      <Style x:Key="BtnStyle" TargetType="Button">
            <Setter Property="Width" Value="120"></Setter>
            <Setter Property="Background" Value="White"></Setter>
            <Setter Property="Margin" Value="20,7"></Setter>
      </Style>
    </Window.Resources>
    <Grid>
      <Grid.RowDefinitions>
            <RowDefinition Height="40"></RowDefinition>
            <RowDefinition></RowDefinition>
      </Grid.RowDefinitions>
      <StackPanel Orientation="Horizontal">
            <ButtonStyle="{StaticResource BtnStyle}" Click="Button_Click" Content="Wijmo" ></Button>
            <ButtonStyle="{StaticResource BtnStyle}" Click="Button_Click" Content="SpreadJS"></Button>
            <ButtonStyle="{StaticResource BtnStyle}" Click="Button_Click" Content="SpreadJS Designer"></Button>
            <TextBlock VerticalAlignment="Center" Name="statusText" ></TextBlock>
      </StackPanel>
      <Border Height="1" Background="Gray" VerticalAlignment="Bottom"></Border>
      <Grid Grid.Row="1">
            <wv2:WebView2 Name="webview" Source="https://demo.grapecity.com.cn/wijmo/demos/" Grid.ColumnSpan="2">

            </wv2:WebView2>
      </Grid>

    </Grid>
</Window>

4. 通过后台代码设置Button的点击事件打开不同页面
      private void Button_Click(object sender, RoutedEventArgs e)
      {
            if((sender as Button).Content.ToString() == "SpreadJS")
            {
                webview.Source =new Uri("https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/#/samples");
            }
            if ((sender as Button).Content.ToString() == "SpreadJS Designer")
            {
                webview.Source = new Uri("https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html");
            }
            if ((sender as Button).Content.ToString() == "Wijmo")
            {
                webview.Source = new Uri("https://demo.grapecity.com.cn/wijmo/demos/");
            }
      }

最总运行效果


以上仅展示了通过WebView2来显示我们的官网demo,
在开发实际的混合应用过程中,可以通过您的webservice作为中介,实现应用中客户端.NET部分和web页面的交互。




最后附上此例demo





放下 发表于 2022-5-1 11:33:47

:):):):)

Richard.Ma 发表于 2022-5-5 09:16:59

本帖最后由 Richard.Ma 于 2024-4-19 18:05 编辑

:mj72:
页: [1]
查看完整版本: 使用WebView2开发包括SpreadJS和Wijmo的混合应用