zoukankan      html  css  js  c++  java
  • WPF第一章(XAML前台标记语言(Chapter02代码讲解))

    XAML前台标记语言(Chapter2代码讲解)

        很不好意思,工作有点忙,博客停了两天。相对于一门语言的学习,理论知识和实践必不可少,大多数时间我们要用,对于代码也是,一边不行可以看两遍,实在不行背下来,其实就我个人而言,学习一门语言会经历阶段有: 一点不懂---->被逼着用,Copy,不管是什么--->哎,他们怎么写出来的代码--->看懂了别人的代码--->再次使用的时候发现,以前遇到过--->再看第三遍,第四遍,第五遍--->噢,原来是这个样子。 其实我们不是天生的天才神童(也有可能是),可是重复大量的工作我们就可以达到天才般的水平,所以 不会正常,多看几遍就可以了,但是千万别懒惰。

      言归正传,先说一下 WPF开发的最佳的开发工具吧,目前本人用的是(Expression Blend 4 & Expression Design 4 & VS2010)当然你也可以选择其他的工具,只要自己看着方便就可以。下面看一下啊 我们之前的代码吧

      首先第一个项目示例:EightBall-包含 app.config,App.xaml,window1.xaml

      app.config 这个大家都很熟悉,从名字就可以得知他是程序 配置文件 , 比如最常用的数据库连接字符串,程序版本,常用的参数啊,都可以写到里面。

    <?xml version="1.0"?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    </startup>
    </configuration>

      这里面就是程序版本参数。

      App.xaml 这个是程序的入口控制,比如你可以修改 首先运行的窗体,现在默认的是Window1.xaml,当然也可以更换其他的启动窗体;当然调用一下System.Threading.Mutex

    类似QQ登录后,当再次运行桌面程序时候,就会提示:程序已经在运行等等。

      

    1 <Application x:Class="WindowsApplication1.App"
    2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4     StartupUri="Window1.xaml"
    5     >
    6     <Application.Resources>
    7          
    8     </Application.Resources>
    9 </Application>

    
    
    public partial class App : Application
        {
            System.Threading.Mutex CPDPM_Pro;
            public App()
            {
                this.Startup += new StartupEventHandler(App_Startup);
            }
            /// <summary>
            /// 程序只运行一次
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
           private  void App_Startup(object sender, StartupEventArgs e)
            {
                bool runing;
                CPDPM_Pro = new System.Threading.Mutex(true, "Process", out runing);
                if (!runing)
                {
                    MessageBox.Show("程序已经运行!");                
                    Environment.Exit(0);
                }
                //throw new NotImplementedException();
            }
        }

      window1.xaml文件就是我们要编辑的窗体了

         AnswerGenerator.cs 是我们要调用的类。

      下面分析一下 Window1.xaml文件

      

    <Window x:Class="EightBall.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Eight Ball Answer" Height="328" Width="412" >
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*" />
          <RowDefinition Height="Auto" />
          <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.Background>
          <LinearGradientBrush>
            <LinearGradientBrush.GradientStops>
              <GradientStop Offset="0.00"  Color="Red" />
              <GradientStop Offset="0.50" Color="Indigo" />
              <GradientStop Offset="1.00" Color="Violet" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
        </Grid.Background>
               
      </Grid>
    </Window>

      首先<window></window> 这是 WPF Window.xaml的根目录,可以设置窗体属性 Title 标题,可以设置 最大化 最小化 ,尺寸,透明度,背景,与窗体有关的都可以设置

    当然也可以在<window></window>标记下写属性比如 <window.width>1024</window.width>

    <Window.BackGround>    <ImageBrush><image source/></ImageBrush>   </Window.BackGround>

      其次<window></window> 中的 x:Class="EightBall.Window1" 是识别Window1 的后台路径,只有前台和后台路径一直才可以编译,不然组件无法实现。尤其是在窗体重命名的时候,往往要记得修改此属性,不然无法编译。 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 这两行是WPF文件的命名空间,这个是默认的不做考虑,是XAML文件都是有的。

      往下就是<Grid> <Grid>就相当一个容器,容器里面放着我们所有的控件,和很多乱七八糟的东西 当然<Grid> 也可以嵌套定义的

      下面看一下代码

      <Grid.RowDefinitions>
          <RowDefinition Height="*" />
          <RowDefinition Height="Auto" />
          <RowDefinition Height="*" />
        </Grid.RowDefinitions>

    <Grid> 是把这个界面(Grid 界面) <RowDefinition Height="*" />
    分成三行 当然行指正定义它的高度 宽度是随着窗体的大小自动防缩的
    高度设置 为 "*"的 意思是窗体拉大缩小 你会发现 这个行酒吧剩余的空间填满,运行拉边框就会发现。Auto也可以试一试
     <Grid.Background>
          <LinearGradientBrush>
            <LinearGradientBrush.GradientStops>
              <GradientStop Offset="0.00"  Color="Red" />
              <GradientStop Offset="0.50" Color="Indigo" />
              <GradientStop Offset="1.00" Color="Violet" />
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>
     </Grid.Background>

    这个时候发现有 Grid背景属性,是由线条构成的 渐进色 参数 属性
    下面的东西就很简单了 一些文本的文本控件的属性,后台后一个很实用的东西可以看一下
    点击按钮后 有一个  this.Cursor = Cursors.Wait; 这就告诉用户当前正在忙碌中,鼠标会变成圈圈的忙碌,等代码处理结束后
    this.Cursor = null;这样就可以变回鼠标的形状

    而相对 项目中的NonCompiledXaml 不符合基础教程在这里不作考虑

    好de到这里,谢谢

  • 相关阅读:
    vue 之循环添加不同class
    小程序 之使用HMACSHA1算法加密报文
    微信小程序 之wx.getLocation()获取地理信息中的小坑
    js 时间戳与yyyy-mm-dd或yyyy-MM-dd HH-mm-ss互相转换
    小程序 之登录 wx.login()
    打开串口(COM)号大于9时报错
    linux的mysql权限错误导致看不到mysql数据库
    Nginx报错汇总
    获取磁盘总空间和剩余空间
    关于CoCreateInstance的0x800401f0问题
  • 原文地址:https://www.cnblogs.com/slf007/p/2805922.html
Copyright © 2011-2022 走看看