精华内容
参与话题
问答
  • xaml

    2020-07-11 19:49:04
    1.认识xaml xaml是一种声明式的语言,当你看到一个标签,就意味着声明了一个对象, 对象之间的关系要么式并列,要么式包含,全都体现到标签的关系。 Property 属性 Attribute 属性 前者侧重对象的属性,后侧侧重...


    1.认识xaml

    xaml是一种声明式的语言,当你看到一个标签,就意味着声明了一个对象,
    对象之间的关系要么式并列,要么式包含,全都体现到标签的关系。

    Property 属性
    Attribute 属性 
    前者侧重对象的属性,后侧侧重xml 文法属性,通常来说,后者的数量多于前者。

    <Window x:Class="WpfApp1.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:WpfApp1"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <StackPanel>
                <Button Content="测试" Width="100" Height="20"  x:Name="btn1"  ></Button>
                <Button Content="你好" Width="100" Height="20"  x:Name="btn2" IsEnabled="{Binding State}"></Button>
            
            </StackPanel>

        </Grid>
    </Window>

    window 对象的Height是Property,Class 是xml文法上的属性。


    xaml的名称空间

    c# 名称空间使用using语法,xaml 使用 xmlns语法。
    xmlns[:可选的映射前缀] = "名称空间" 

    引用程序集的命名空间:
     xmlns:test="clr-namespace:System.Data;assembly=System.Data"
     

    如何自定义URL
    Properties
    AssemblyInfo.cs 
    [assembly: XmlnsDefinition("http://www.Test.com", "WpfApp1.Test1")]
    [assembly: XmlnsDefinition("http://www.Test.com", "WpfApp1.Test2")]
    [assembly: XmlnsDefinition("http://www.Test.com", "WpfApp1.Test3")]

    xmal 引入命名空间有2种,一种是http的字符串,这个字符串对应的命名空间已经在AssemblyInfo确定了。
    一种是单个命名空间,clr-namespace assembly 格式,指出引用的命名空间和程序集的名称。

    2.xaml


    如果属性是一个复杂元素,而不是一个简单的字符串,则属性的值是一个元素。

    <Rectangle.Fill>
    <SolidColorBrush Color="red" ></SolidColorBrush>
    </Rectangle.Fill>

    标记扩展
    <StackPanel>
                <Button Width="60" Content="测试" x:Name="btn"></Button>
                <TextBlock Text="{Binding ElementName=btn, Path=Width}"></TextBlock>
            </StackPanel>

    比如绑定


    xaml 标签的属性

    x 命名空间的都是http://schemas.microsoft.com/winfx/2006/xaml 携带的命名空间
    常用的有
    x:Class 类名
    x:Key 键
    x:Name 控件的名称
    X:Null 空对象
    X:Static 静态的
    X:Type 类型

    X:Name 和Name 的区别
    Name 是FramwWorkElement 类的属性,这个是wpf的基类,所有的wpf控件都具有此属性。
    有些类是没有的Name属性的,

    展开全文
  • XAML

    2019-01-29 17:18:56
    1、XAML语法术语 XAML语法术语的起源 此处定义的XAML语法术语在XAML语言规范中也有定义或引用。XAML是一种基于XML且遵循XML结构规则的语言。其中的术语共享自或基于描述XML语言或XML文档对象模型(DOM)时的常用...

    1、XAML语法术语

    XAML语法术语的起源

    此处定义的XAML语法术语在XAML语言规范中也有定义或引用。XAML是一种基于XML且遵循XML结构规则的语言。其中的术语共享自或基于描述XML语言或XML文档对象模型(DOM)时的常用术语。

    对象元素语法

    对象元素语法是一种XAML标记语法,通过声明XML元素来实例化公共语言运行库(CLR)类或结构。此语法与其他标记语言(例:HTML)的元素语法相似。

    例如, 示例是一个对象元素语法,实例化Butotn类的一个新实例,并指定了其属性和值。

    下面的示例还包括可扩展应用程序标记语言(XAML)内容属性语法的对象元素语法。其中包含的内部文本将用来设置TextBox可扩展应用程序标记语言(XAML)的Text属性。

    <TextBox>This is a Text Box!</TextBox>

    属性语法

    属性语法是一种XAML标记语法,该语法通过针对元素声明属性(Attribute)来设置属性(Property)值或命名事件的事件处理程序。元素总是通过对象元素语法来声明。属性名必须与属性或事件的CLR成员名称相匹配。

    2、XAML命名控件和命名控件映射

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    第一个声明将整个WPF(Windows Presentation Foundation)命名空间映射为默认命名空间,第二个声明映射单独的可扩展应用程序标记语言(XAML)命名空间,通常将其映射为 x:前缀。

    关系:XAML实际上是语言标准,而WPF是将XAML作为语言使用的一个实现。XAML语言指定一些为了兼容而假定要实现的语言元素,每个元素都应当能通过针对XAML命名空间执行的XAML处理器实现进行访问。

     

     

     

     

    展开全文
  • Xaml

    2009-11-19 21:59:00
    首先在使用WPF时并不一定要使用Xaml,每一件Xaml能做的事情可以用任何一种.net语言实现,反过来就不行,就好像营养师可以为你调节饮食使得你身体健康间接使你外貌美丽,化妆师可以直接使你外貌美丽但他不能使你身体...

     首先在使用WPF时并不一定要使用Xaml,每一件Xaml能做的事情可以用任何一种.net语言实现,反过来就不行,就好像营养师可以为你调节饮食使得你身体健康间接使你外貌美丽,化妆师可以直接使你外貌美丽但他不能使你身体健康。Xaml扮演的角色是化妆师。但很少有使用WPF而不是用Xaml的情况,因为Xaml有它的好处:
      *用最简单的方式表示用户界面与对象关系
      *使得程序界面与后台逻辑分离。也就是说设计师可以专注于界面设计,程序员专注于后台逻辑的实现
      *可以应用于其他技术,如WF(Windows Workflow Foundation)

      *可以用如XamlPad这样的不需要编译就可以查看结果的软件查看Xaml的效果(如果需要对某个地方做多次修改,每次都要编译才能查看效果是很烦人的)

     

      在Visual Studio中创建一个WPF项目,并在窗口中拖进一个Button控件。就会出现如下Xaml语句:

    ContractedBlock.gifExpandedBlockStart.gifCode1
    1<Window x:Class="Window1"
    2    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4    Title="Window1" Height="300" Width="300">
    5    <Grid>
    6        <Button Margin="93,102,57,70.5" Name="Button1" FlowDirection="LeftToRight">Button</Button>
    7    </Grid>
    8</Window>

      Xaml是基于Xml,所以整体看上去跟Xml很相似。如果用从xml的角度来看的话,存在一个windows的根节点,然后跟节点有4个属性(x:clss,xmlns,xmlns:x,title,height,width),有一个子节点grid,子节点中包含一个Button的节点有4个属性(margin,name,flowdirection)和一个值Button。
      那么以上的东西我们用xml分析了结构,但在Xaml中上面都代表了什么呢?
     

      上面说到Xaml能做的东西用任何一种.net语言都可以实现。如果我们用vb.net在一个窗口中创建一个按钮,首先我们必须引用命名空间,然后创建并实例化命名空间里面的窗口类跟按钮类。然后设置窗口对象和按钮对象的属性。
      Xaml在一开始也是要引用命名空间,vb.net中利用imports关键字,C#用using关键字,Xaml就在根节点中用xml记录节点属性的方式,为根节点的xmlns赋上命名空间的名字。如代码中的:

    1    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    2    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

     上面的字符串看起来像一个网址,其实这个网页并不存在,他其实是一个命名空间的名字,只是他的名字比较特别。("http://schemas.microsoft.com/winfx/2006/xaml/presentation")对应.net中的多个命名空间,xaml在引用命名空间的时候通常会对命名空间定义一个标记符(别名)。xmlns:x ,X在Windows根节点内都会代表("http://schemas.microsoft.com/winfx/2006/xaml")命名空间。
      通常第一定义的命名空间成为“主要命名空间”(使用得最多)不带标记符(为了方便啊,使用得最多,每次都要带别名就书写跟可读性就差了)。第二个定义的命名空间为“次要命名空间”带标记符X,这个X是随便写的,不过大家的习惯次要命名空间的标记符都是X(要跟上步伐,每个人都这样咯,我们跟风吧)。

     

      如果有学过ASP.NET的同学应该知道asp.net中网页元素跟程序逻辑是分开在两个文件中,如果新建一个页面输入名字为Index.aspx,Visual Studio会自动生成另一个同名的文件Index.vb或index.cs。当你在设计模式中创建一个按钮然后双击按钮准备输入按钮的单击事件,Visual Studio会切换到源代码模式并打开index.vb。这样就实现了网页设计跟后台逻辑的分离。
      同样是微软的东西,相同之处还是有的。Xaml负责界面设计那么它一定有一种规则使得他跟另一个后台逻辑的文件绑定共同实现一个程序窗口。那么这种规则就是把与一个后台逻辑类的类名赋值改X标记符(相当于"http://schemas.microsoft.com/winfx/2006/xaml"命名空间)里面的class。

     

      属性元素与特性
      在Windows 的节点中title,height,weight就是windows(窗口)元素的特性,因为这些特性源于主要命名空间,所以在赋值这个特性的时候直接使用特性名。
        title=,height=,weight=
      表示Xaml中一个XML元素的特性可以使用属性元素的规则。例如

    <Button Name="Button1" FlowDirection="LeftToRight">
    <Button.Margin>
    93,102,57,70.5
    </Button.Margin>
    <Button.Content>
    Button
    </Button.Content>
    </Button>

    与上面的代码中定义的Button是同等的。Button.Content中的句点是用于区分对象元素与属性元素。以“类型名.属性名”的形式出现,然后属性值就放在对应属性元素的开始于结束标签中。还有一点需要注意的是属性元素没有特性。就是不可能出现<Button.Content ABCD=123>属性值</Button.Content >.

      类型转换器
      它是使得Xaml简洁的功臣之一,在上面的属性元素中无论是位置(Maigin)还是内容(Content)包含的值都没有指定值得类型,我们知道在任何一种.net语言中,对一个对象的属性赋值,赋的值必须符合对象属性的类型。不然就会出错。那么在Xaml中没有指定值的类型他是怎样实现赋值的呢?
      需要说一下的是上面的值既不是String(字符串)也不是Object(对象)。Xaml解析器或编译器会存在能解析并转换这些值得类型转换器,把这个值转换成Button对象所支持的类型。

     

      标记扩展
      它跟类型转换器一样,加强Xaml的表达能力。当转换器不能为你提供一些属性类型的转换(你想为一个属性赋值,但这个值的类型内置的转换器不支持),那么你就需要从其他类中取得这个属性的类型。这就需要用到标记扩展。

    <Button Backgroud="{x:Null}" 
            Height
    ="{x:Static SystemParameters.IconHeight}" 
            Content
    ="{Binding Path=Height,RelativeSource={RelativeSource Self}}" />

      只要把特性值用花括号({})括起来,Xaml编译器或解析器就会把认做标记扩展,然后从相当的类或对象中获取相应的值。
        *这部分还不是很了解,定个标记。

     

     

    ------------
      先写这么多吧,明天继续。这章不知道是实在抽象难懂还是我笨,看了两遍才勉强写出上面那些东西。
      在图书馆借的《WPF全视角分析》Xaml那部分我看不下去,在当当网上买了《WPF揭秘》昨天下午收到。然后看了两章。感觉比那本全视角容易懂一点。

      我最怕冷了,在宿舍我都要穿4件衣服。这个冬天要我怎样过啊!!!

    转载于:https://www.cnblogs.com/jielife/archive/2009/11/19/1606428.html

    展开全文
  • WPF xaml数据绑定

    2020-09-09 22:08:09
    xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定xaml数据绑定
  • Xamarin XAML语言教程XAML文件结构与解析XAML

    Xamarin XAML语言教程XAML文件结构与解析XAML

    XAML文件结构

    在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构


    图1.16  结构

    其中,.xaml文件和.xaml.cs文件就是XAML文件的结构。以下就是对这两个文件的介绍。

    •   .xaml文件中包含的就是XAML代码,实际上就是XML语法。官方的说法:它是一个声明对象的语言,为我们创建对象提供便捷的一种方式。与HTML类似,特点是用来描述用户接口 (UI)内容。
    •  通常我们把与.xaml文件关联的.xaml.cs文件叫作代码隐藏文件。如果开发者引用.xaml中的任何一个事件(如Button的Click 事件),,将在这个文件中编写对应的事件处理代码。

    解析XAML

    在上文中我们创建XAML文件后,会看到类似以下3种代码。

    (1)第一种是使用Visual Studio创建项目后创建XAML文件显示的XAML代码:


    • <?xml version="1.0" encoding="utf-8" ?>
    • <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    •              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    •              x:Class="Hello.XAMLPage">
    •   <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
    • </ContentPage>

    (2)第二种是使用Xamarin Studio创建项目后创建XAML文件显示的XAML代码:


    • <?xml version="1.0" encoding="UTF-8"?>
    • <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    •                         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    •                         x:Class="Hello.MyPage">
    •          <ContentPage.Content>
    •          </ContentPage.Content>
    • </ContentPage>

    (3)第三种是在创建项目的同时创建XAML文件显示的代码:


    • <?xml version="1.0" encoding="utf-8" ?>
    • <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    •              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    •              xmlns:local="clr-namespace:Hello"
    •              x:Class="Hello.MainPage">
    •   <Label Text="Welcome to Xamarin Forms!"
    •            VerticalOptions="Center"
    •            HorizontalOptions="Center" />
    • </ContentPage>

    这3种文件代码的公共部分为如下:


    • <?xml version="1.0" encoding="utf-8" ?>
    • <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    •              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    •              x:Class="Hello.MainPage">
    • </ContentPage>

    以下就是对XAML公共默认的部分进行说明。


    1.  第一行是对XML简单的说明,其中包含了XML版本号以及编码格式。
    2. 第二行代码至最后一行代码的功能是构建界面所需要的内容。其中,第二行和第三行使用两个XML命名空间(xmlns)声明引用了URL。开发者不需要知道这些URL指向的具体内容。他们只是Xamarin和Microsoft拥有的URL,它们基本上充当版本标识符。第一个XML命名空间声明意味着在XAML文件中定义了没有前缀的标签,它引用Xamarin.Forms中的类,如ContentPage。第二个命名空间声明定义了x的前缀,它用于XAML本身固有的几个元素和属性,(理论上)由XAML的所有实现支持。

    注意:这些元素和属性根据嵌入在URL中的年份略有不同。Xamarin.Forms支持2009 XAML规范,但不是所有的。


    1. 第四行代码。在声明x前缀之后,该前缀立即用于名为Class的属性,这是因为使用这个x前缀在XAML文件中非常普遍。例如,Class简称为x:Class。x:Class指定.NET类名称。

    注意:x:Class属性只能出现在XAML文件的根元素中,以定义派生的C#类。

    对于x:Class指定类的定义,开发者可以在.xaml.cs文件中看到,代码类似于以下代码:


    • using System;
    • using System.Collections.Generic;
    • using System.Linq;
    • using System.Text;
    • using System.Threading.Tasks;
    • using Xamarin.Forms;
    • namespace Hello
    • {
    •     public partial class MainPage : ContentPage
    •     {
    •         public MainPage()
    •         {
    •             InitializeComponent();
    •         }
    •     }
    • }

    注意:x:Class的值所指示的类型在声明的时候必须使用partial关键字。这样由XAML解析成的类和.xaml.cs文件里定义的部分就合二为一了。正是由于这种partial机制,我们可以把类的逻辑代码留在.xaml.cs文件中,并用C#语言来实现,而把那些于声明及布局UI元素相关的代码分离出来,实现UI以逻辑分离。

    展开全文
  • XAML属性

    2019-08-05 20:44:18
    XAML属性 开发工具与关键技术:Visual Studio 2017、WPF 撰写时间: 2019年8月5日 1、元素属性 XAML是一种声明性语言,XAML编译器会为每一个标签创建一个与之对应的对象。对象创建出来之后要对它的属性进行必要的...
  • XAML简介

    2019-10-03 19:04:13
    最近一段时间主要是在学习WPF,首先想介绍下XAML 什么是XAML? XAML是esXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一...
  • xaml_XAML或JavaFx?

    2020-06-06 17:55:52
    xaml 这是使用XAML和JavaFx构建应用程序的快速,主观, 无权且非常不科学的比较。 比较是基于我与每个人合作的个人经验。 在XAML方面,这意味着WPF和Win8存储应用程序 。 在JavaFx方面,这意味着Windows 7应用程序...
  • XAML转HTML.zip

    2020-10-07 12:28:01
    xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html
  • United XAML(OpenSource XAML)

    2019-10-02 10:23:33
    United XAML 这个好象是XAML的起源。这些网站最近一次更新都是在2004年,看来是件很老的事情拉!难道都加入MS哦! Free, Open Source XAML Project Lineup Free, Open Source XAML Project Lineup ...

空空如也

1 2 3 4 5 ... 20
收藏数 25,062
精华内容 10,024
关键字:

xaml