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到这里,谢谢

原文地址:https://www.cnblogs.com/slf007/p/2805922.html