zoukankan      html  css  js  c++  java
  • WPF系列二

    继续wpf系列课程,本节课会讲解(xaml,)

    Xaml语言,刚开始学习wpf,对xaml语言看着眼熟,其实还是有点陌生,xaml就根据xml演化而来,xaml语言的编写方式更像于asp.net网页的开发,wpf把一个窗体,分为,xaml,设计器,和cs代码,用xaml来描述窗体的样式,设计器可以直接拖拽控件,cs代码编写后台.

    Xaml语法一边分为下面几种描述的方式,

    1,对象元素语法,

    2,特行语法 <Button Click=”button1_Click” Content=”WPF,Hello,World!” />可以这样描述一个控件

    3,属性元素语法

    <Button>

                <Button.Background>red</Button.Background>

    </Button>

    4,内容语法

    <Button>hello</Button>

    5,属性元素和内容合并的语法

    <Button>hello

                <Button.Background>red</Button.Background>

    </Button>

    6,标记扩展语法

    Text=”{Binding.ElementName=xxx,Path=Value}”

    一般创建一个wpf的项目,xaml文件会有两部分构成,一个是window对象,一个是grid对象,

    Window对象里面一般是声明了命名空间等一些定义性的东西,grid会是一个空的没有元素的布局方式.

    Wpf里面也会有很多布局,数据banding等很多技术,后面都会说到.

    相对应是,既然我们可以用xaml语法生成控件,那我们使用C#代码完全也可以,就像写cs程序那样,经常需要动态的添加一些控件.

    Button btn = new Button();

    btn.Width = 100;

    btn.Height = 100;

    btn.Content = "Login";

    this.Content = btn;

    这几行代码很简单,new 了一个Button对象,让当前这个对象的内容添加Button的一个实例.

    最简单的集合项

    <ComboBox Height="23" SelectedIndex="0" HorizontalAlignment="Left" Margin="127,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120">

                <ComboBoxItem>A</ComboBoxItem>

                <ComboBoxItem>B</ComboBoxItem>

    </ComboBox>

    这个xaml描述的是一个下拉框,其实如果对asp.net比较熟悉,这样的代码一看就明白了,xaml也就好学了.

    既然讲到了xaml,布局等,给出一个下载地址,有一个简单的布局代码,给大家下载.

    http://115.com/file/e7hbk0je

    当然,你也可以写麻烦一点的布局.

    比如

    <ComboBoxItem>

                    <Rectangle Fill="Red" Width="70" Height="20"></Rectangle>

     </ComboBoxItem>

    也可以在集合项里面写一个Rectangle,或者别的控件.也可以这样插入一张给图片,反正你想怎么写就怎么写,xaml的解析能力很强大的.

    <ComboBoxItem>

                    <Rectangle Width="70" Height="20">

                        <Rectangle.Fill>

                            <ImageBrush ImageSource="E:\学习代码\WPF代码\Test2\Xaml1\超频美女.jpg"></ImageBrush>

                        </Rectangle.Fill>

                    </Rectangle>

    </ComboBoxItem>

    既然讲了一个集合项讲了,这么多,还要一些别的集合项,大家自己动手吧…

    Xaml语法,继续解析

    1,类型转换器,什么事类型转换器呢

    <Button Width="100" Height="100">

                <Button.Background>red</Button.Background>           

    </Button> 先看看这段代码, <Button.Background>red</Button.Background>,为什么我直接写一个red,就可以解析出来对应的颜色,就是类型转换器的功劳..

    var a = System.Windows.Media.ColorConverter.ConvertFromString("#FFCCCCCC");

     System.Windows.MessageBox.Show(a.ToString());

     var b = new System.Windows.Media.BrushConverter().ConvertFromString("Red");

     System.Windows.MessageBox.Show(b.ToString());

    看这一段代码,这是wpf里面的类型转换器,可以把red转换成argb值.wpf的xaml也是通过转换器把值转换为颜色.

    2,引用值和标记扩展.

    先来看看引用值,怎么定义和引用..

    在grid上面定义资源,

    <Window.Resources>

            <SolidColorBrush x:Key="backgroundBrush">Yellow</SolidColorBrush>

            <SolidColorBrush x:Key="borderBrush">Red</SolidColorBrush>

    </Window.Resources>

    定义了两个简单的资源文件.在下面的代码中,将学习一下怎么引用这些定义的资源文件

    <Button Background="{StaticResource backgroundBrush}" BorderBrush="{StaticResource borderBrush}" Width="100" Height="100"></Button>

    先来分析一下这行代码, Background="{StaticResource backgroundBrush}" 使用了静态资源backgroundBrush

    你可以写 Background=”{里面会提示使用,静态资源,绑定,动态资源等选项,我们选择使用静态资源,然后我们空格一下 写下你要使用的资源的key 就可以.}”

    在这里,要说一下我们的强大的编辑器,visual studio,你可以使用文档大纲,从树形结构很容易的看出,你这个xaml的层次,以及每行xaml语法,所呈现的样式,这些功能很强大..

    3, 事件和xaml代码隐藏,

    Wpf和asp.net一样 ,都在直接在UI上面写代码,wpf的代码隐藏就是这样的,没上面变化..

    <Button Width="100" Height="100" Click="button_Click" Content="Close"></Button>

            <x:Code>

                <![CDATA[

                    void button_Click(object sender,RoutedEventArgs e)

                    {

                    this.Close();

                }

                ]]>           

            </x:Code>

    Button下面写的就是隐藏代码.不支持调试,我用vs2010旗舰版 不支持提示,总体来说,wpf的代码隐藏功能做的很烂.

    其实既然有了前台潜入代码,也就可以实现前台潜入代码调用后台代码,后台代码,调用前台潜入代码,很简单..

    这一章,先写这么多了,快过年了,很多事,来总结一下这章,先是了解了xaml语法的构成,了解了集合项的绑定,以及复杂的呈现,然后是类型转换器,资源,和代码嵌入写法..

    下一章会是关于布局的一些知识,以及资源样式. 

    未完待续….

  • 相关阅读:
    开放GIS标准OGC之路(4)之 解密Filter(摘抄)
    在WCF中使用async/await 关键字的简化的异步编程模型(译)
    WinCE仿真器设置
    oracle PL/SQL编程详解
    oracle 日期格式
    钢笔工具使用教程
    使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明
    利用bitmap将图片部分颜色透明
    PS圆角图片并保留透明背景
    Script Debugger的使用
  • 原文地址:https://www.cnblogs.com/chenmengmeng/p/2321263.html
Copyright © 2011-2022 走看看