zoukankan      html  css  js  c++  java
  • WPF XAML

    1. xmlns 在xml中专门用于声明名字控件,
      • xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 是WPF的核心名字空间,它包含所有WPF类,包括用于构建用户界面的控件
      • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 是XAML名字空间,包含各种XAML实用特性,之后会有x:Class ,x:Name等 ,x就表示这个命名空
    2. XAML名字空间中的Class 告诉XAML编译器生成一个新Applicaion类(Partial类)用于事件处理,我们可以提供Class的Partial类的其他实现,x名字空间的主要内容如下:
      • attribute类:
        x:Class:告诉窗口编译成类,如上
        x:ClassModifier:编译成的类的访问权限,public,internal,private等
        x:Name:编译成类的属性
        x:FieldModifier:修饰属性的访问权限
        x:key:用于检索资源的key
        x:Shared:声明资源是否共享,与x:key配合使用
      • 标记扩展类:
        x:Array :数组标签类型
        x:Static:表示静态成员
        x:Type:表示类型
        x:nul:
    3. WPF Xaml的标记扩展常用的包括:StaticResource,DynamicResource,TemplateBinding等,完整的参考:http://msdn.microsoft.com/zh-cn/library/ms747180(v=vs.110).aspx.要注意WPF xaml的标记扩展与上面xaml本身自带的标记扩展X:Static等的区别
    4. InitializeComponent():由编译器自动生成,功能是调用System.Windows.Application类的LoadComponent()方法从程序集中提取BAML(编译过的XAML),并使用它构建用户界面
    5. 在代码中要操作控件,则控件必须包含XAML Name属性,这样XAML编译器会自动生成以Name命名的对象,前提是使用RuntimeNameProperty标签修饰了类,由于FramworkElement类使用了RuntimeNameProperty修饰了所以继承自它的控件都可以这样使用

    6. 复杂属性的设置,以设置Grid的Background为例,如果想使用其他画刷设置Background,可以通过如下方式添加其他标签来实例化特定的类
           
        <Grid Name="grid1"> 
              <Grid.Background>
              <LinearGradientBrush>    
              </LinearGradienBrush>
              </Grid.Background>
              </Grid>
    7. 标记扩展:可以使属性值绑定到一个动态变化的量,所有标记扩展类都继承自System.Windows.Markup.MarkupExtension基类,例如:
            
      <Button ... Foreground>="{x:Static SystemColors.ActiveCaptionBrush}">,
      与button.Foreground=SysemColors.ActiveCaptionBrush 作用相同,其中Static是StaticExtension类的缩写,在引用扩展类时可以省略Extension
      • x:Type 为变量提供Type对象, 即等号左边是Type类型
      • x:Static 生成静态值
      • x:Null 将null指定为属性的值
    8. 附加属性,通常用于控件布局
    9. Xaml让父元素决定如何处理嵌套的子元素,算法如下:
      • 父元素继承自IList,则解析器调用IList.Add 添加子元素
      • 父元素继承自IDictionary,则解析器调用IDictionary.Add方法添加子元素,当使用字典集合时,还必须设置x:Key特性为每个item指定一个键名
      • 父元素使用了ContentProperty特性进行修饰,则解析器使用Children.Add 添加子元素

    10. Xaml中引用其他名字空间:
      xmlns:prefix="clr-namespace:Namespace;assembly=AssemblyName"
      prefix是名字空间的简称,例如x是xmla名字空间的简称,可以在xmla中使用
    11. Xaml可以不随项目一起编译,项目中可以XamlReader读取xaml, 并用LogicalTreeHelper.FindLogicalNode或者FrameWorkElement.FindName方法获取对象
  • 相关阅读:
    读书笔记·如何高效读懂一本书
    读书笔记·微习惯
    LittleTools之输出RenderTexture工具
    常用自制脚本(一):透明度统一修改
    LittleTool之批量修改材质
    曲面Shader
    温故而知新之镜头旋转
    LittleTools之网格输出为模型
    Unity给力插件之ShaderForge(三)
    vue的学习
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3967203.html
Copyright © 2011-2022 走看看