2. XAML

1. 什么是 XAML

  XAML 可以说是 XML 的一个特殊子集,使用相同的语法,只是 XML 可以自定义任何的节点和属性,但 XAML 是有所限制的,只能在规定的命名空间下使用。

2. namespace

  XAML 所受的限制即 namespace。

x:Class="WhatIsXAML.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WhatIsXAML"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"

  XAML 的命名空间其实和 C# 里的命名空间差不多,都是为了做限定。而 http://schemas.microsoft.com/winfx/2006/xaml/presentation 这种类似网址的命名空间其实并不能跳转,只是一个单纯字符串,没有太多的意义。目前在此不对这做太多介绍,只要知道一般情况下不要更改默认的命名空间即可。

3. 默认属性、复杂属性

  默认属性即控件中不需声明即可解析的属性,如 Button 中的 Content,TextBlock 中的 Text:

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

<TextBlock Text="123"/>
<TextBlock>123</TextBlock>

  复杂属性是指在 XAML 中可简单以字符串声明但其实在 C# 中却要声明对象复杂实现的属性,如 Margin,HorizontalAlignment 等:

<Button Name="clickMeButton"
             Height="150" Width="200"
             Background="Red"
             Margin="20,20,0,0"
             HorizontalAlignment="Left" VerticalAlignment="Top"
             Content="Click Me!"/>
Button myButton = new Button();
myButton.Height = 150;
myButton.Width = 200;
myButton.Margin = new Thickness(20, 20, 0, 0);
myButton.Background = new SolidColorBrush(Colors.Red);
myButton.Content = "Click Me!";
myButton.HorizontalAlignment = HorizontalAlignment.Left;
myButton.VerticalAlignment = VerticalAlignment.Top;

4. TypeConverter

  复杂属性的实现其实靠的是 TypeConverter。

5. 注释

  XAML 利用 <!-- --> 注释:

<!--
<Button Name="clickMeButton"
        Height="150" Width="200"
        Background="Red"
        Margin="20,20,0,0"
        HorizontalAlignment="Left" VerticalAlignment="Top"
        Content="Click Me!"
        Click="clickMeButton_Click"/>
-->


原视频链接:

UWP-004 - What Is XAML?

UWP-005 - Understanding Type Converters

UWP-006 - Understanding Default Properties, Complex Properties and the Property Element Syntax

UWP-007 - Understanding XAML Schemas and Namespace Declarations

时间: 2024-10-20 06:34:40

2. XAML的相关文章

WP8.1开发中对于XAML中一些语言的学习(1);

以前在学习WP开发的时候,看到视频中说到程序在创建之初,MainPaige.xaml页面上有一些代码: <Page x:Class="草案.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="usi

OUTLOOK.EXE错误模块名称: Windows.UI.Xaml.dll

错误应用程序名称: OUTLOOK.EXE,版本: 15.0.4875.1000,时间戳: 0x57fc9641 错误模块名称: Windows.UI.Xaml.dll,版本: 10.0.14393.953,时间戳: 0x58ba5c3d 异常代码: 0xc000027b 错误偏移量: 0x00000000006d611b 错误进程 ID: 0x191c 错误应用程序启动时间: 0x01d2ae038d010d36 错误应用程序路径: C:\Program Files\Microsoft Off

XAML的理解

1.什么是XAML?XAML是WPF技术中专门用于涉及UI的语言 2.XAML使用树形逻辑结构来描述UI 3.一份XAML文档中除了使用标签声明对象就是初始化对象的属性 4.简化XAML的技巧:(1)能使用Attribute=Value形式赋值的就不使用属性元素.(2)充分利用默认值,去除冗余:StartPoint=“0,0” EndPoint=“1,1”是默认值,可以省略.(3)充分利用XAML的简写方式,如:LinearGradientBrush.GradientStops的数据类型是Gra

Visual Studio 2008 Package Load Failure:未能正确加载包“Microsoft.VisualStudio.Xaml”

在安装好Visual Studio 2008后,启动Visual Studio 2008 发现如下提示: 包加载失败 未能正确加载包“Microsoft.VisualStudio.Xaml”( GUID = {E58C2A8B-BCC4-4559-AD59-D62EB6D58A22} ).请与包供应商联系以获得帮助.由于可能会发生环境损坏,建议重新启动应用程序.要禁止将来加载此包吗? 可以使用“devenv /resetskippkgs”重新启用包加载. 按照提示,在visual studio

炫酷WPF——XAML

XAML主要规则: → XAML文档中的每个元素都映射为.NET类的一个实例,元素的名称也完全对应于类名.如元素<Button>指示WPF创建Button对象. → 与所有XML文档一样,可在一个元素中嵌套另一个元素,XAML让每个类灵活地决定如何处理嵌套.嵌套通常是一种表示“包含”的方法——如果在一个Grid元素中发现一个Button元素,那么用户界面可能包括 一个在其内部包含一个Button元素的Grid元素. → 可通过attribute设置每个类的property.在某些attribu

WPF关于Generic.xaml

如果需要用到Themes/Generic.xaml作为默认风格资源文件,不要忘了该项目的AssemblyInfo.cs中必须要有以下这段: [assembly: ThemeInfo( ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located //(used if a resource is not found in the page, // or application re

App.xaml.cs

using System.Windows; namespace HelloWorld { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); Bootstrapper boots

App.xaml

<Application x:Class="HelloWorld.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Application.Resources> <ResourceDictionary> &l

Shell.xaml

<Window x:Class="HelloWorld.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:prism="http://www.codeplex.com/prism" Title="