要
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小时内与您取得联系。