您的位置:首页 > 编程语言

WPF第一章(XAML前台标记语言(Chapter02代码讲解))

2012-12-06 20:04 399 查看
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到这里,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: