整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          WPF - 1.XAML基礎

          XAML是派生自XML的可擴展應用程序標記語言(Extensible Application Markup Language),由微軟創造。XML是一種可擴展標記語言,與HTML類似,但是它是傳輸數據,而非顯示數據,XML標簽沒有預定義,需要自行定義標簽WPF(Windows Presentation Foundation)是微軟新一代圖形系統,繪圖技術的改進基于Windows 的用戶界面框架,屬于.NET Framework 3.0的一部分。由兩個主要部分組成:引擎和編程框架。

          正文

          命名空間

          xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml——這表示利用x代替XAML的命名空間。用于包含特定的關鍵字和System.Windows.Markup中類型的子集。xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation——另一個命名空間。映射諸多wpf.net命名空間(system.windows.xxx,是個一對多的映射,主要封裝了三個程序集中,WindowsBase.dll、Presentation.dll和PresentationFramework.dll)

          x: 前綴

          x:Class='MyXaml.Window1' ——利用class特性指定c#類名(后臺c#代碼) x:Key:為 ResourceDictionary(或其他框架中的類似字典概念)中的每個資源設置唯一的鍵。 在典型的 WPF 應用標記中的所有 x: 用法中,x:Key 可能占到 90%。 x:Name:處理對象元素后,為運行時代碼中存在的實例指定運行時對象名稱。 x:Static:啟用一個返回靜態值的引用,該靜態值不是與 XAML 兼容的屬性。 x:Type:根據類型名稱構造 Type 引用。

          屬性元素

          一般的,我們想要對一個標簽的屬性賦值,可以直接在標簽內部鍵入屬性名給其賦值,如我們給button的Content屬性賦值:

          <Grid x:Name="grid1">
          <tag>  
              <tag.property>   
                   value 
               </tag.property>
          </tag>
          <Button>
                      <Button.Content>this is test</Button.Content>
                      <Button.Background>
                          <SolidColorBrush Color="Red"></SolidColorBrush>
                      </Button.Background>
          </Button>

          集合語法

          XAML 語言包含一些優化,可以生成更易于閱讀的標記。 其中一項優化是:如果某個特定屬性采用集合類型,則在標記中聲明為該屬性的值內的子元素的項將成為集合的一部分。 在這種情況下,子對象元素的集合是設置為集合屬性的值。

          <Grid>
              <Grid.Background>
                  <LinearGradientBrush>
                      <GradientStop Offset="0" Color="Red"></GradientStop>
                      <GradientStop Offset="1" Color="Green"></GradientStop>
                  </LinearGradientBrush>
              </Grid.Background>
          </Grid>

          內容屬性和集合語法組合

          <StackPanel>
              <Button>First Button</Button>
              <Button>Second Button</Button>
              <StackPanel>
                  <StackPanel.Children>
                      <Button>First Button</Button>
                      <Button>Second Button</Button>
                  </StackPanel.Children>
              </StackPanel>
          </StackPanel>

          特性語法(事件)

          <Button Content="Button" Click="Button_Click"></Button>

          類型轉換器

          Thickness 結構是一個類型示例,該類型擁有可使用 XAML 的類型轉換。 Thickness 指示嵌套矩形中的度量,可用作屬性(如 Margin)的值。 通過對 Thickness 放置類型轉換器,所有使用 Thickness 的屬性都可以更容易地在 XAML 中指定,因為它們可指定為特性。

          <Button Margin="10,20,10,30" Content="Click me"/>
          <Button Content="Click me">
              <Button.Margin>
                  <Thickness Left="10" Top="20" Right="10" Bottom="30"/>
              </Button.Margin>
          </Button>

          注意:

          XAML是大小寫敏感的,所以不能使用<button>代替<Button>,但類型轉換器通過不是大小寫敏感的,這意味著 Foreground="White" 和 "Foreground="white"具有相同的效果。

          • WPF中的XAML具有如下自身的特性:
          • 每個XAML文檔都映射到一個.NET類的實例。元素名將與.NET 類名嚴格的匹配。
          • 在XMl文檔中,可以在一個元素中嵌套另一個元素,這種嵌套關系將會形成一個元素的樹狀結構
          • 可以通過設置元素屬性來為每個類的屬性賦值。XAML提供提供了屬性元素語法來為復雜的屬性進行賦值。
          • 與XML相似,每個XAMl文件都只能有一個根元素,并且必須具有兩個命名空間

          注釋

          語法:<!--被注釋的內容-->

          • 只能出現在開始標簽和結束標簽之間
          • 不能注釋標簽的Attribute
          • 注釋不能嵌套

          eb與WPF(Windows Presentation Foundation)的融合是一種將兩種技術結合起來的方法,可以實現雙邊互補,為應用程序開發帶來更豐富的用戶體驗和功能。


          Web技術在跨平臺、可訪問性和用戶界面的靈活性方面具有明顯的優勢。通過使用HTML、CSS和JavaScript等技術,可以輕松地創建具有響應式設計和適應不同設備的網頁應用。Web應用還可以通過云平臺進行部署和訪問,實現跨平臺和遠程協作的優勢。



          而WPF是一種基于Windows操作系統的桌面應用程序開發技術,它提供了豐富的用戶界面和多媒體功能。WPF應用程序可以充分利用Windows操作系統的特性,如窗口管理、本地文件系統訪問和硬件加速等。WPF還提供了強大的數據綁定和可視化效果,使開發人員能夠創建出具有高度交互性和視覺吸引力的應用程序。




          將Web和WPF融合起來可以實現雙邊互補的優勢。具體而言,可以通過以下方式實現:

          嵌入Web內容:在WPF應用程序中嵌入Web瀏覽器控件,以展示Web頁面或運行Web應用。這樣可以在WPF應用程序中輕松集成Web內容,例如顯示實時數據、集成第三方服務或展示在線媒體。




          使用Web技術擴展WPF應用:在WPF應用程序中使用Web技術,如HTML、CSS和JavaScript,來增強用戶界面和交互性。通過使用Web技術,可以實現更靈活的布局、動態內容更新和響應式設計,以提供更好的用戶體驗。




          使用WPF嵌入式瀏覽器控件:在Web應用程序中嵌入WPF的嵌入式瀏覽器控件,以利用WPF的功能和特性。這樣可以在Web應用程序中使用WPF的強大渲染能力、多媒體支持和數據綁定,提供更豐富的用戶體驗。




          共享數據和狀態:Web和WPF應用程序可以通過共享數據和狀態來實現雙向通信和協作。通過使用Web API和WPF應用程序之間的數據傳輸,可以實現數據的同步和更新,保持應用程序之間的一致性。




          綜上所述,Web與WPF的融合可以實現雙邊互補,為應用程序開發帶來更豐富的用戶體驗和功能。通過合理地結合Web和WPF技術,開發人員可以充分發揮兩者的優勢,創造出更具創新性和吸引力的應用程序。

          源WPF控件庫推薦:ModernWpf

          ModernWpf倉庫信息

          站長從博客園 林德熙 處了解到此控件庫,通過clone、編譯、運行,發現這庫確實不錯,正如 林德熙 所言:“有十分漂亮的界面,整個都是 Win10 風,界面部分和默認 UWP 相近, 這個庫支持了 .NET Framework 4.5 和以上的版本,以及 .NET Core 3.0 和以上的版本,可以在 Windows Vista SP2 和以上的系統運行。” 本人遂從該倉庫中將readme搬運過來,希望讓更多人知道有這個庫的存在,能給WPF開發者多一個UI庫選擇。

          白色主題

          快速開始

          1. 創建一個WPF應用
          2. 從NuGet中安裝包 ModernWpfUI.
          3. 編輯 App.xaml:

          代碼語言:javascript

          復制

          <Application
              ...
              xmlns:ui="http://schemas.modernwpf.com/2019">
              <Application.Resources>
                  <ResourceDictionary>
                      <ResourceDictionary.MergedDictionaries>
                          <ui:ThemeResources />
                          <ui:XamlControlsResources />
                      </ResourceDictionary.MergedDictionaries>
                  </ResourceDictionary>
              </Application.Resources>
          </Application>
          1. 編輯 MainWindow.xaml:

          代碼語言:javascript

          復制

          <Window
              ...
              xmlns:ui="http://schemas.modernwpf.com/2019"
              ui:WindowHelper.UseModernWindowStyle="True">
              <ui:SimpleStackPanel Margin="12" Spacing="24">
                  <TextBlock Text="My first ModernWPF app" Style="{StaticResource HeaderTextBlockStyle}" />
                  <Button Content="I am a button" />
                  <Button Content="I am an accent button" Style="{StaticResource AccentButtonStyle}" />
              </ui:SimpleStackPanel>
          </Window>

          部分截圖

          黑色主題

          ControlPalette1

          Nighttime

          NumberBox

          ContentDialog

          DataGrid

          ItemsRepeater

          CustomTitleBar.Dark

          Calendar

          Menu

          Progress

          ColorRamp

          AccentColorPalette

          HighContrast.png

          其他控件庫介紹:

          1. 國內開源C# WPF控件庫Panuon.UI.Silver推薦
          2. 《Dotnet9》系列-開源C# WPF控件庫3《HandyControl》強力推薦
          3. (四)開源C# WPF控件庫《AduSkin – UI》

          主站蜘蛛池模板: 日韩人妻精品无码一区二区三区 | 麻豆AV一区二区三区久久| 国偷自产视频一区二区久| 久久精品无码一区二区WWW| 亚洲国产精品综合一区在线| 亚洲天堂一区在线| 国产在线观看一区精品| AV天堂午夜精品一区二区三区| 无码人妻精品一区二| 蜜臀AV免费一区二区三区| 秋霞日韩一区二区三区在线观看| 亚洲AV无码一区二区三区在线观看 | 人妻视频一区二区三区免费 | 亚洲欧美国产国产综合一区| 97精品国产一区二区三区| 国产精品夜色一区二区三区 | 无码精品久久一区二区三区| 国模丽丽啪啪一区二区| 上原亚衣一区二区在线观看| 一区二区三区在线| 国产精品无码一区二区在线观一| 视频一区二区在线播放| 亚洲一区综合在线播放| 国产一区二区三区免费视频| 丝袜人妻一区二区三区| 国产一区二区三区影院| 制服丝袜一区二区三区| 2014AV天堂无码一区| 日本免费一区二区在线观看| 国产精品伦一区二区三级视频| 日韩免费一区二区三区在线 | 综合久久久久久中文字幕亚洲国产国产综合一区首 | 精品无码成人片一区二区| 精品亚洲一区二区三区在线播放| 亚洲av片一区二区三区| 日本一区二区三区四区视频| 少妇人妻精品一区二区| 国内精品一区二区三区东京| 无码乱人伦一区二区亚洲| 精品一区二区久久久久久久网站| 一区二区三区亚洲视频|