要
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"具有相同的效果。
注釋
語法:<!--被注釋的內容-->
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技術,開發人員可以充分發揮兩者的優勢,創造出更具創新性和吸引力的應用程序。
ModernWpf倉庫信息
站長從博客園 林德熙 處了解到此控件庫,通過clone、編譯、運行,發現這庫確實不錯,正如 林德熙 所言:“有十分漂亮的界面,整個都是 Win10 風,界面部分和默認 UWP 相近, 這個庫支持了 .NET Framework 4.5 和以上的版本,以及 .NET Core 3.0 和以上的版本,可以在 Windows Vista SP2 和以上的系統運行。” 本人遂從該倉庫中將readme搬運過來,希望讓更多人知道有這個庫的存在,能給WPF開發者多一個UI庫選擇。
白色主題
代碼語言:javascript
復制
<Application
...
xmlns:ui="http://schemas.modernwpf.com/2019">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ui:ThemeResources />
<ui:XamlControlsResources />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
代碼語言: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
其他控件庫介紹:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。