XAML 創建瀏覽器應用程序

?XAML 創建瀏覽器應用程序

XAML 創建瀏覽器應用程序

作者:WPFDevelopersOrg - 驚鏵

原文鏈接:https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/app-development/wpf-xaml-browser-applications-overview?view=netframeworkdesktop-4.8

  • 框架使用.NET40

  • Visual Studio 2019;

  • 什么是XBAP ?

    • XBAP是應用于瀏覽器中的應用程序。

    • WPF的不同點如下。

    • 它是運用于瀏覽器窗口中。

    • 同通常具有優先的權限。

    • 它不需要安裝。

    • 也就是把它緩存到計算機當中。不會提示安裝警告,更新也是如此。

    • XBAP要受到安全模型的限制。

  • XBAP的運行要求有哪些?

    • IE6及以上的版本。

    • Firefox(火狐)2及以上版本。

    • XBAP 部署到 Web 服務器,例如 Microsoft Internet Information Services (IIS) 5.0 或更高版本。不需要在 Web 服務器上安裝 .NET Framework,但是需要注冊 WPF 多用途 Internet 郵件擴展 (MIME) 類型和文件擴展名。

1)新建 WPF瀏覽器應用(.NET Framework) 如下圖,創建完成會默認生成一個Page1.xaml

3126342b95147d667837ecbee7760ba5.png

👇

151ed0d6808a12f184d37ab726a402e9.png

2)修改Page1.xaml的代碼如下

<Page?x:Class="WpfBrowserAppSample.Page1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"?xmlns:d="http://schemas.microsoft.com/expression/blend/2008"?xmlns:wpfdev="https://github.com/WPFDevelopersOrg/WPFDevelopers"xmlns:local="clr-namespace:WpfBrowserAppSample"mc:Ignorable="d"?d:DesignHeight="450"?d:DesignWidth="800"Title="WpfBrowserAppSample?-?Page"><Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition?Width="Auto"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition?Height="40"/><RowDefinition/><RowDefinition?Height="40"/></Grid.RowDefinitions><TextBox?wpfdev:ElementHelper.IsWatermark="True"wpfdev:ElementHelper.Watermark="請輸入內容"/><Button?Grid.Column="1"?Style="{StaticResource?PrimaryButton}"?Content="確定"/><DataGrid?Grid.Row="1"?Grid.ColumnSpan="2"Margin="0,10"AutoGenerateColumns="False"?ItemsSource="{Binding?UserCollection,RelativeSource={RelativeSource?AncestorType=local:Page1}}"><DataGrid.Columns><DataGridTextColumn?Header="Date"?Binding="{Binding?Date}"?IsReadOnly="True"/><DataGridTextColumn?Header="Name"?Binding="{Binding?Name}"?IsReadOnly="True"/><DataGridTextColumn?Header="Address"?Binding="{Binding?Address}"?IsReadOnly="True"/></DataGrid.Columns></DataGrid><StatusBar?Grid.Row="2"?Background="{StaticResource?WindowBorderBrushSolidColorBrush}"Foreground="White"Grid.ColumnSpan="2"><StatusBarItem>??WPFDevelopersOrg</StatusBarItem><Separator?Background="White"?Margin="10,10"/><StatusBarItem?x:Name="VersionNumber"?>V?1.0</StatusBarItem></StatusBar></Grid>
</Page>
  • Page1.xaml.cs的代碼如下

using?System;
using?System.Collections.Generic;
using?System.Collections.ObjectModel;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Windows;
using?System.Windows.Controls;
using?System.Windows.Data;
using?System.Windows.Documents;
using?System.Windows.Input;
using?System.Windows.Media;
using?System.Windows.Media.Imaging;
using?System.Windows.Navigation;
using?System.Windows.Shapes;namespace?WpfBrowserAppSample
{///?<summary>///?Page1.xaml?的交互邏輯///?</summary>public?partial?class?Page1?:?Page{public?static?readonly?DependencyProperty?UserCollectionProperty?=DependencyProperty.Register("UserCollection",?typeof(ObservableCollection<UserInfo>),?typeof(Page1),new?PropertyMetadata(null));public?ObservableCollection<UserInfo>?UserCollection{get?=>?(ObservableCollection<UserInfo>)GetValue(UserCollectionProperty);set?=>?SetValue(UserCollectionProperty,?value);}public?Page1(){InitializeComponent();Loaded?+=?delegate{var?time?=?DateTime.Now;UserCollection?=?new?ObservableCollection<UserInfo>();for?(var?i?=?0;?i?<?4;?i++){UserCollection.Add(new?UserInfo{Date?=?time,Name?=?"WPFDevelopers",Address?=?"No.?189,?Grove?St,?Los?Angeles",});time?=?time.AddDays(2);}};}}public?class?UserInfo{public?DateTime?Date?{?get;?set;?}public?string?Name?{?get;?set;?}public?string?Address?{?get;?set;?}}}
37e173c8c2cf6b7dddef2b55964875c0.png

創建完全信任的 XBAP

此設置將進行以下更改:

  • 在項目文件中,將 <TargetZone> 元素值更改為 Custom

  • 在應用程序清單 (app.manifest) 中,將 Unrestricted="true" 特性添加到 PermissionSet 元素。

3)修改app.manifest的此處代碼,如不修改IE瀏覽器不能正常打開WpfBrowserAppSample.xbap

409b7fb619c159157f22337d5712ee3e.png
<PermissionSet?class="System.Security.PermissionSet"version="1"ID="Custom"SameSite="site"Unrestricted="true"?/>

4)運行目錄下使用IE瀏覽器打開WpfBrowserAppSample.xbap預覽如下。

41543cc05dd9df43ff5739b1ef002251.png

👇

b00ff2bf46a71f6983ad5ba6bf4e0290.png

👇

b94f59bd856e8e10f87ef5640e11da95.png

5)發布XBAP步驟如下。

57de32a05346b478d1a3e5e22dc5221b.png

👇

1c756da4ba3f2f0bc80316c148b0c87b.png

👇

3a5891c0ebf4d1b9a4662cfb713de3c4.png

6)新建IIS

5910414c2f7ef0656ceb8575651aa302.png

7)然后到發布的目錄C:\SampleApp\WpfBrowserAppSample\WpfBrowserAppSample\publish\下創建index.htm

<!DOCTYPE?html>
<html><head><meta?charset="utf-8"></head><frameset><frame?src="WpfBrowserAppSample.xbap"></frameset>
</html>

8)開始訪問http://localhost:5050 如端口號沖突可設置其他。

fc5df6aa610ea7cbff1e7938ab963ef8.png

👇

00e2ac4f91aa950deeacdc94c2d134c1.png

如果未運行成功請參考:

  • 您需要轉到 Internet 選項 --> 安全選項卡 --> 自定義級別 --> 并啟用選項 XAML 瀏覽器應用程序 ?--> 啟用

8d1bcbe849a354053b665bd693e14101.pngb8270d32b10cb75f027e0a74eac3ceb7.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git 合并分支選項 --squash 合并提交歷史

git merge --squash <branchname>--squash選項的含義是&#xff1a;本地文件內容與不使用該選項的合并結果相同&#xff0c;但是不提交、不移動HEAD&#xff0c;因此需要一條額外的commit命令。其效果相當于將another分支上的多個commit合并成一個&#xff0c;放在當前分…

Kubernetes共享使用Ceph存儲

目錄 簡要概述環境測試結果驗證簡要概述 Kubernetes pod 結合Ceph rbd塊設備的使用&#xff0c;讓Docker 數據存儲在Ceph,重啟Docker或k8s RC重新 調 度pod 不會引起數據來回遷移。 工作原理無非就是拿到ceph集群的key作為認證&#xff0c;遠程rbdmap映射掛載使用。那么就要啟用…

在Activity不可見時暫停WebView的語音播放,可見時繼續播放之前的語音

private AudioManager mAudioManager;private AudioManager.OnAudioFocusChangeListener mFocusChangeListener; Override protected void onPause() {   super.onPause();   stopPlayVoice(); } Override protected void onResume() {   super.onResume();   startPla…

MFC界面庫BCGControlBar v25.3新版亮點:Dialogs和Forms

2019獨角獸企業重金招聘Python工程師標準>>> 親愛的BCGSoft用戶&#xff0c;我們非常高興地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v25.3正式發布&#xff01;新版本添加了對Visual Studio 2017的支持、增強對Windows 10的支持等。接下來幾篇文…

基于 .NET 7 的 QUIC 實現 Echo 服務

前言隨著今年6月份的 HTTP/3 協議的正式發布&#xff0c;它背后的網絡傳輸協議 QUIC&#xff0c;憑借其高效的傳輸效率和多路并發的能力&#xff0c;也大概率會取代我們熟悉的使用了幾十年的 TCP&#xff0c;成為互聯網的下一代標準傳輸協議。在去年 .NET 6 發布的時候&#xf…

php.ini-development和php.ini-production的區別

使用zip版MySQL安裝時&#xff0c;需要將php.ini-development或php.ini-production改成php.ini&#xff0c;那么php.ini-development和php.ini-production的區別在哪兒呢&#xff0c;通俗的說法時&#xff0c;development是開發環境&#xff0c;production用于生產環境&#xf…

Server.MapPath()的用法

http://blog.csdn.net/qiuhaifeng_csu/article/details/19416407 Server.MapPath(string path)作用是返回與Web服務器上的指定虛擬路徑相對應的物理文件路徑。其參數path為Web 服務器的虛擬路徑&#xff0c;返回結果是與path相對應的物理文件路徑。但有時參數并非為虛擬路徑&a…

為什么阿里巴巴禁止把SimpleDateFormat定義為static類型的?

在日常開發中&#xff0c;我們經常會用到時間&#xff0c;我們有很多辦法在Java代碼中獲取時間。但是不同的方法獲取到的時間的格式都不盡相同&#xff0c;這時候就需要一種格式化工具&#xff0c;把時間顯示成我們需要的格式。 最常用的方法就是使用SimpleDateFormat類。這是一…

關于信息收集和加工的思考

隨著互聯網的發展&#xff0c;獲取信息的手段越來越多&#xff0c;我們對手機的依賴程度超乎想象&#xff0c;每天忙碌著&#xff0c;大腦接收著豐富的信息&#xff0c;感覺每天都學習到了很多的知識。但我們對學習經常會有些誤區&#xff1a;1、書買了擺在書架上&#xff0c;看…

[譯]關于NODE_ENV,哪些你應該了解

原文 Node.js開發者經常檢測環境變量NODE_ENV&#xff0c;但你是否知道設置這個值同時也具有著某些別的意義&#xff1f;閱讀本文你將發現這些。NODE_ENV是一個在Express框架中極其常用的環境變量。用其確定應用的運行環境&#xff08;諸如開發&#xff0c;staging&#xff0c;…

GatewayWorker Not Support On Windows.

thinkphp版本&#xff1a;5.1 tp5.1運行命令行php think worker:gateway出現GatewayWorker Not Support On Windows.是因為在tp5.1的命令行中做了判定&#xff0c;不支持windows環境下運行。 這里不支持windows環境并不是說gateway worker不支持windows&#xff0c;而是tp5.1的…

8支團隊正在努力構建下一代Ethereum

“我們不想在構建 Ethereum 2.0時重新造輪子。” 談到開發人員為 Ethereum 區塊鏈進行兩個獨立的升級&#xff08;一個稱為 Ethereum 2.0&#xff0c;另一個稱為 Ethereum 1x&#xff09;所作出的補充努力&#xff0c;勞爾喬丹堅持認為&#xff0c;在較短的時間內將升級包括在 …

fastjson SerializerFeature詳解

名稱含義備注QuoteFieldNames輸出key時是否使用雙引號,默認為true UseSingleQuotes使用單引號而不是雙引號,默認為false WriteMapNullValue是否輸出值為null的字段,默認為false WriteEnumUsingToStringEnum輸出name()或者original,默認為false UseISO8601DateFormatDate使用ISO…

費曼學習法中問題的提出與反問,擴展與主動查詢的學習習慣訓練過程

在2022年11月05日的對話中&#xff0c;九遷先講了女媧補天和女媧造人的故事&#xff0c;女媧造人的故事還講了兩個版本的&#xff0c;隨后提到了一個事情&#xff0c;那就是&#xff0c;如果你要找一個神仙一起度過一天&#xff0c;你想找誰&#xff0c;想做些什么&#xff1f;…

Fiddle:使用斷點:bpu,bpafter

http://www.cnblogs.com/yoyoketang/p/6778006.html轉載于:https://www.cnblogs.com/peixianping/p/7230021.html

windows環境下TP5.1使用think-worker(Workerman/GatewayWorker)

文章目錄首先是解決如何運行gatewayworker調試gatewayworker程序向指定客戶端發送消息在TP框架中調用Gateway的API總結說明測試環境 windows10&#xff1b;PHP7.2&#xff1b;TP5.1&#xff1b; 這里只介紹如何使用TP集成的workerman擴展庫think-worker&#xff0c;原生workerm…

webpack之DefinePlugin使用

DefinePlugin是webpack注入全局變量的插件&#xff0c;通常使用該插件來判別代碼運行的環境變量。在使用該插件需要注意的是&#xff0c;如果在該插件配置了相關的參數&#xff0c;必須要源碼中使用&#xff0c;webpack才會注入。例如&#xff1a; new webpack.DefinePlugin({p…

Magicodes.IE 2.7.0發布

2.7.02022.11.07使用SkiaSharp替代SixLabors.ImageSharp移除SixLabors.Fonts感謝linch90的大力支持&#xff08;具體見pr#462&#xff09;部分方法改為虛方法2.7.0-beta2022.10.27使用SixLabors.ImageSharp替代System.Drawing&#xff0c;感謝linch90 &#xff08;見pr#454&…

Mobx 與 Redux 的性能對比

在本文中你將看到我最終得出的結論是 Mobx 的性能優于 Redux。但很明顯這樣的結論是片面的&#xff0c;甚至是有失偏頗的&#xff0c;因為我只選取了一個的場景對兩者進行測試。可能真實的情況恰恰相反&#xff0c;Mobx 僅僅在我測試的這個場景中優于 Redux&#xff0c;但是在我…

linux lsof/netstat查看進程和端口號相關命令:

本文為博主原創&#xff0c;未經允許不得轉載&#xff1a; 在linux操作時&#xff0c;經常要查看運行的項目的進程和端口號&#xff0c;在這里總結了以下常用到的相關命令&#xff1a; 1.查看系統運行的java項目&#xff0c;并查看進程號 這個用到的命令為&#xff1a; ps -ef|…