WPF基础-XAML

XAML语言说明

xaml是微软在xml语言基础上开发出来,用于设计WPF程序UI的语言
XAML语言的初衷是为了让设计师和程序员能够干各自专业的事,即UI设计与代码逻辑分离。(逻辑有点像点后端分离,但其实并没有完全分开,微软叫代码后置

UI设计师可以用XAML语言设计UI,甚至可以用Blend软件(和Photoshop类似)设计UI,再由工具转为XAML语言,接着由XAML中的Attribute将其与后端代码衔接。

根标签

<Window x:Class="WPF_1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF_1"
        mc:Ignorable="d"
        Title="MainWindow01" Height="511" Width="745">

XAML语言是派生自XML,xmlns这个Attribute(Attribute可以翻译为属性,但面向对象中的property也翻做属性,当同时提到xaml和c#时会有混肴,所以本文就不翻译了)也是从XML继承来的,是XMLNameSpace的缩写。表示该类所引用的空间,与C#的using类似。其中每个类只能有一个xmlns,它所引用的空间是CLR(Common Language Runtime)。

然后还有一个默认的xmlns:x,冒号后面是前缀,它所引用的空间是XAML所独有的语言解析程序集,如果要使用该空间的Attribute,需要在前面加上前缀:== x:Name ==或 == x:Class ==。

Title 是该窗体的名字(可以修改),后面Height,和Width可以修改窗体的大小。
我们可以用xmlns:? Attribute自己引用程序引入的dll类库,引号后面自己起名,可以单字母或用单词。

X名称空间中的Attribute

x:Class是每个xaml类必须的,表示它与哪个后台的类合并。x:Class所指向的类必须用partial修饰,表示这是个部分类。
XAML是申明式语言,它的标签都是申明一个对象,既是对象就有保护级别。
x:ClassModifier 是该XAML类的访问级别
x:Name 表示标签Name属性的值,
x:FielfModifier 表示标签的访问级别、
x:Key 可以为标签中的资源使用x:keyattribute,方便检索
x:Shared 每个申明x:Key 的标签都会自动申明一个x:Shared=true的值,表示每次检索出的含有x:Key 的标签是同一个,该对象是共享的

X名称空间中的标记扩展

x:Type 该类型接收的是数据类型(一般类型使用接收偶的是对象),可以理解为C#中反射机制中的Type类型

public class Mybutton : Button
    {
        public Type UserWindowType { get;set; }
        protected override void OnClick()
        {
            base.OnClick();
            Window win = Activator.CreateInstance(this.UserWindowType) as Window;
            if (win != null)
            {
                win.ShowDialog();
            }
        }
    }
 <local:Mybutton Content="Show" UserWindowType="{x:Type local:MainWindow}" />

x:Null 类似与C#的null,在xaml中赋空值使用x:Null

<Window.Resources>
      <Style TargetType="{x:Type Button}">
          "Width" Value="60">
          "Height" Value="60">
          "Margin" Value="60">
      Style>
  Window.Resources>
  <StackPanel>
      <Button Content="OK"/>
      <Button Content="OK"/>
      <Button Content="OK"/>
      <Button Content="OK" Style="{x:Null}"/>
  StackPanel>

Style 标签必须有TargetType属性,目的是为所有符合的标签赋值,而最后一个Button赋空值 x:Null 可以避免这一情况
Style 标签参照HTML中的

你可能感兴趣的:(WPF,wpf)