格式

1.XAML格式:

<Button x:Name="btnClick" Content="按钮" HorizontalAlignment="Left" Margin="45,94,0,0" VerticalAlignment="Top" Width="75" Click="btnClick_Click" />

<Button x:Name="btnClick"  HorizontalAlignment="Left" Margin="45,94,0,0" VerticalAlignment="Top" Width="75" Click="btnClick_Click">
<Button.Content>按钮</Button.Content>
</Button>

是一样的,第二种,第一种,一般用于写常规的属性,第二种,一般用于写比较复杂的属性

常用控件或属性

2.Visibility属相:表示控件是否可见,但是枚举类型,Collapsed不可见,Visible可见

3.TextWrapping属性:指定文本在到达包含框的边缘时是否换行,Wrap换行,NoWrap不换行

4.MaxLength属性:可在文本框中手动输入的最大字符数

5.密码输入框控件:PasswordBox ,读写密码的属性为:Password

6.可空数据类型:引用类型

不可空的数据类型:值类型

注意:在不可null类型后面加"?"就可以为null了,例如:

int? i = null;//编译器就不会报错

简单解析:

int 和 int? 是不同的类型,int是不可为null,int?是可为null,如果把为null的赋值给不可为null的,编译器会出错:

但可以通过类型转换,使可为null的赋值给不可为null的,但前提是,可为null的对象必须要有值

比如:CheckBox控件的属性IsChecked,返回类型为bool?:

if ((bool)checkBox1.IsChecked)
{
MessageBox.Show("选中了");
} //或者
if (checkBox1.IsChecked == true)//系统自动转换
{
MessageBox.Show("选中了");
}

7.GroupName属性:可为单选按钮等设置不同的组,这样就会避免了在一个界面中,放入多个单选按钮后只能选择其一

8.DatePicker控件:日期选择器

DateTime? dt = datePicker1.SelectedDate;
if (dt == null)
{
MessageBox.Show("没有选择日期,请选择");
}
else
{
MessageBox.Show(dt.ToString());
}

9.Image控件的Source属性,能够指定图片的位置

10.ProgressBar控件:进度条控件,常用属性有:Minimum最小值,Maximum最大值,Value初始值,IsIndeterminate不确定模式(当设置为true的时候,进度条会不断地自动循环)

常用布局

11.StackPanel堆栈布局(组件是水平或垂直的)

<Grid>
<Button Margin="0,0,456,132">
<Button.Content><!--Button控件的Content属相的值本来是只能一个的,但如果想设置多个的时候,可以使用布局-->
<StackPanel Orientation="Horizontal"><!--组件排列方向:水平-->
<Image Width="100" Height="100" Source="1.jpg"></Image>
<TextBlock VerticalAlignment="Center" Text="戒指"></TextBlock><!--垂直方向中间显示,文字为戒指-->
</StackPanel>
</Button.Content>
</Button>
</Grid>

12.Grid网格布局

“第一行第一列”,在Grid布局中为“0行0列”,放置的控件,默认放置的位置是“0行0列”

<Grid>
<Grid>
<Grid.ColumnDefinitions><!--列定义,设置了4列-->
<ColumnDefinition Width="150"></ColumnDefinition><!--指定第一列的宽度为150-->
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions><!--行定义,设置了4行-->
<RowDefinition Height="150"></RowDefinition><!--指定第一行的高度为150-->
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<!--以下是设置布局里面的子控件-->
<Button Content="测试按钮" Grid.Row="1" Grid.Column="1"></Button><!--默认位置是第0行第0列;可采用附加属性的写法,指定控件的位置-->
<TextBlock Text="keenleung" Background="Blue" Grid.Column="0" Grid.Row="0"></TextBlock>
<Image Source="1.jpg" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"></Image><!--位置为2行0列,占据2列-->
<Button Content="测试按钮2" Grid.Row="2" Grid.Column="2" Grid.RowSpan="2"></Button><!--位置为2行2列,占据2行-->
</Grid>
</Grid>

一个简单的登陆界面:

<Grid>
<Grid>
<!--一个简单的登陆界面-->
<Grid.RowDefinitions><!--行定义,以下设置了3行-->
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions><!--列定义,以下设置了2列-->
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="用户名:" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock><!--该控件水平和垂直方向上都是居中显示-->
<TextBox Grid.Column="1" Margin="15"></TextBox>
<TextBlock Text="密码:" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="1"></TextBlock>
<PasswordBox Grid.Row="1" Grid.Column="1" Margin="15"></PasswordBox><!--Margin控制控件边距的大小-->
<Button Content="确定" Grid.Row="2" Margin="15"></Button>
<Button Content="取消" Grid.Column="2" Grid.Row="2" Margin="15"></Button>
</Grid>
</Grid>

结果视图:

13.通过代码往布局里面添加控件

<Grid>
<StackPanel Name="stp1" MouseDown="stp1_MouseDown" MouseEnter="stp1_MouseEnter"></StackPanel>
</Grid>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Button btn = new Button();
btn.Content = "第1个按钮";
stp1.Children.Add(btn);//往布局里通过代码添加控件
}

14.通过代码设置Grid布局的行数和列数,并且添加控件

 /// <summary>
/// 通过代码设置Grid布局的行数和列数,并且添加控件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//先设置Grid布局为几行和几列
for (int t = ; t < ; t++)//10行10列
{
RowDefinition rd = new RowDefinition();
grid1.RowDefinitions.Add(rd); ColumnDefinition cd = new ColumnDefinition();
grid1.ColumnDefinitions.Add(cd);
}
//往布局里面放控件,假如放置的都是Button控件
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
Button btn = new Button();
btn.Content = i + "," + j; //通过代码修改Grid.Row和Grid.Column属性
Grid.SetRow(btn, i);
Grid.SetColumn(btn, j); grid1.Children.Add(btn);
}
}
}

结果视图:

15.如果想加入的是图片,以下代码做参考:

//前面的代码不变
Image img = new Image();
//代码给Source属性赋值
img.Source = new BitmapImage(new Uri("1.jpg", UriKind.Relative));
Grid.SetRow(img, i);
Grid.SetColumn(img, j);
grid1.Children.Add(img);

16.如果是随机选取图片呢?

 //往布局里面放控件,假如放置的都是随机选取的图片(前面的代码不变)
Random random = new Random();
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
int imgNum = random.Next(, );//随机选取图片 Image img = new Image();
//代码给Source属性赋值
img.Source = new BitmapImage(new Uri("images/" + imgNum + ".jpg", UriKind.Relative));
//通过代码修改Grid.Row和Grid.Column属性
Grid.SetRow(img, i);
Grid.SetColumn(img, j);
grid1.Children.Add(img);
}
}

结果:

16.布局的嵌套

<Window x:Class="布局的嵌套.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Content="顶层布局的按钮" Grid.Row="1" Grid.Column="1"></Button>
<StackPanel><!--在Grid顶层布局里面嵌套一个StackPanel布局-->
<Button Content="内层StackPanel布局里的按钮"></Button>
<Button Content="内层StackPanel布局里的按钮"></Button>
<Button Content="内层StackPanel布局里的按钮"></Button>
</StackPanel>
<Grid Grid.Column="1"><!--在Grid顶层布局里面嵌套一个Grid布局-->
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Content="内层Grid里的按钮"></Button>
</Grid>
</Grid>
</Grid>
</Window>

视图:

练习

17.模拟一个简单计算器的界面(采取8行5列)

code:

 <Window x:Class="一个计算器的简单布局.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="323" Width="228">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Menu HorizontalAlignment="Left" Height="20" VerticalAlignment="Top" Width="220" Grid.ColumnSpan="5">
<MenuItem Header="查看"></MenuItem>
<MenuItem Header="编辑"></MenuItem>
<MenuItem Header="帮助"></MenuItem>
</Menu>
<TextBox Grid.Row="1" Grid.ColumnSpan="10" Margin="5,10,5,0" IsReadOnly="True"></TextBox><!--Margin是”左上右下“这样的一个顺序-->
<Button Content="MC" Grid.Row="2" Width="34" Height="27"></Button>
<Button Content="MR" Grid.Row="2" Grid.Column="1" Width="34" Height="27"></Button>
<Button Content="MS" Grid.Row="2" Grid.Column="2" Width="34" Height="27"></Button>
<Button Content="M+" Grid.Row="2" Grid.Column="3" Width="34" Height="27"></Button>
<Button Content="M-" Grid.Row="2" Grid.Column="4" Width="34" Height="27"></Button>
<Button Grid.Row="3" Grid.Column="0" Width="34" Height="27">
<Button.Background>
<ImageBrush ImageSource="images/boult.png"></ImageBrush>
</Button.Background>
</Button>
<Button Content="CE" Grid.Row="3" Grid.Column="1" Width="34" Height="27"></Button>
<Button Content="C" Grid.Row="3" Grid.Column="2" Width="34" Height="27"></Button>
<Button Grid.Row="3" Grid.Column="3" Width="34" Height="27">
<Button.Background>
<ImageBrush ImageSource="images/+-.png"></ImageBrush>
</Button.Background>
</Button>
<Button Grid.Row="3" Grid.Column="4" Width="34" Height="27">
<Button.Background>
<ImageBrush ImageSource="images/3.png"></ImageBrush>
</Button.Background>
</Button>
<Button Content="7" Grid.Row="4" Grid.Column="0" Width="34" Height="27"></Button>
<Button Content="8" Grid.Row="4" Grid.Column="1" Width="34" Height="27"></Button>
<Button Content="9" Grid.Row="4" Grid.Column="2" Width="34" Height="27"></Button>
<Button Content="/" Grid.Row="4" Grid.Column="3" Width="34" Height="27"></Button>
<Button Content="%" Grid.Row="4" Grid.Column="4" Width="34" Height="27"></Button>
<Button Content="4" Grid.Row="5" Grid.Column="0" Width="34" Height="27"></Button>
<Button Content="5" Grid.Row="5" Grid.Column="1" Width="34" Height="27"></Button>
<Button Content="6" Grid.Row="5" Grid.Column="2" Width="34" Height="27"></Button>
<Button Content="*" Grid.Row="5" Grid.Column="3" Width="34" Height="27"></Button>
<Button Grid.Row="5" Grid.Column="4" Width="34" Height="27">
<Button.Background>
<ImageBrush ImageSource="images/4.png"></ImageBrush>
</Button.Background>
</Button>
<Button Content="1" Grid.Row="6" Grid.Column="0" Width="34" Height="27"></Button>
<Button Content="2" Grid.Row="6" Grid.Column="1" Width="34" Height="27"></Button>
<Button Content="3" Grid.Row="6" Grid.Column="2" Width="34" Height="27"></Button>
<Button Content="-" Grid.Row="6" Grid.Column="3" Width="34" Height="27"></Button>
<Button Content="=" Grid.Row="6" Grid.Column="4" Width="34" Height="59.5" Grid.RowSpan="2"></Button>
<Button Content="0" Grid.Row="7" Grid.Column="0" Width="78" Height="27" Grid.ColumnSpan="2"></Button>
<Button Content="." Grid.Row="7" Grid.Column="2" Width="34" Height="27"></Button>
<Button Content="+" Grid.Row="7" Grid.Column="3" Width="34" Height="27"></Button>
</Grid>
</Grid>
</Window>

WPF基础学习第一天的更多相关文章

  1. WPF基础学习笔记整理 (七) Binding绑定

    基础知识: 数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性:目标对象始终是依赖属性,而源对象则可以是任何内容. BindingOperations类,提供静态 ...

  2. WPF基础学习笔记整理 (一)

    基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: S ...

  3. Java基础学习第一天

    ================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使 ...

  4. C#基础学习第一天(.net菜鸟的成长之路-零基础到精通)

    1.Net平台和C#编程语言的概念 2.桌面应用程序: 我们要使用桌面应用程序,必须要安装该应用程序的客户端. winform应用程序. Application:应用程序 Internet:互联网应用 ...

  5. WPF基础学习笔记整理 (九) 资源

    基础知识: WPF的资源是一种保管一系列有用对象的简单方法,方便于重用. WPF UI元素的Resources属性,都是继承自FrameworkElement列,且其类型为ResourceDictio ...

  6. WPF基础学习笔记整理 (八) 命令

    基础知识: 命令是应用程序的任务,并跟踪任务是否能够被执行. 命令不包含执行应用程序任务的代码. 命令是比事件更高级的元素.默认的命令目标是当前获得焦点的元素. 良好的Win应用程序,应用程序逻辑不应 ...

  7. WPF基础学习笔记整理 (六) RoutedEvent路由事件

    基础知识: 传统的事件模型中,会在消息触发时将消息通过事件传给事件的订阅者(显式的事件订阅),事件订阅者使用事件处理程序来做出响应.事件订阅者必须能够直接访问到事件的宿主(拥有者). 路由事件的事件的 ...

  8. WPF基础学习笔记整理 (五) DependencyObject & DependencyProperty

    参考资料: 1.http://www.cnblogs.com/Zhouyongh/archive/2009/10/20/1586278.html 基础知识: DependencyObject & ...

  9. WPF基础学习笔记整理 (二) XAML

    基础知识: XAML:Extensible Application Markup Language, zammel: 用于实例化.NET对象的标记语言: XMAL使用树形逻辑结构描述UI: BAML: ...

随机推荐

  1. 测试 Nginx 作为前端下各种模式的性能

    测试环境: 1:Nginx 独立处理静态面页请求 5000,开了60个线程 2:Nginx作为前端请求转给 Weblogic 12c 处理 (Spring 4.0平台下的动态面页效果如图) 3:Ngi ...

  2. 妙用HTML5的八大特性来开发移动webAPP

    webAPP的实现基础就是html5+js+css3.可是webAPP还是基于浏览器的微站点开发.正是如此,我们必需要深入的了解html5的特性,这样才干方便我们在开发和设计APP的时候.更合理的採用 ...

  3. OBjective-C:在可变数组NSMutableArray中添加相同对象后,进行自定义的排序方式输出

    以下为自定义的排序方式的实现 #import "Person+Compare.h" @implementation Person (Compare) -(NSComparisonR ...

  4. Informatica 常用组件Lookup之一 概述

    转换类型:被动.已连接/未连接 在映射中使用查找转换以从平面文件或关系表.视图或同义词查找数据.您可以从 PowerCenter Client 和 PowerCenter Server 均连接至的任何 ...

  5. 适配 通知 Notification 通知渠道 前台服务 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. 使用Spring Security和OAuth2实现RESTful服务安全认证

    这篇教程是展示如何设置一个OAuth2服务来保护REST资源. 源代码下载github. (https://github.com/iainporter/oauth2-provider)你能下载这个源码 ...

  7. HDU 1247 Hat’s Words (字典树 &amp;&amp; map)

    分析:一開始是用递归做的,没做出来.于是就换了如今的数组.即,把每个输入的字符串都存入二维数组中,然后创建字典树.输入和创建完成后,開始查找. 事实上一開始就读错题目了,题目要求字符串是由其它两个输入 ...

  8. freemarker 模板开发入门

    数据模型 scalars标量:从根 root 開始指定它的路径,每级之间用点来分隔. 如:whatnot.fruits sequences 序列:使用数组的方括号方式来訪问一个序列的子变量. 如:an ...

  9. WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

    DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join ...

  10. Oracle 之 表新增字段后修改字段顺序

    工作中遇到:在为一个表新增字段后,新增字段在最后,想调整新增字段的位置. 1.原始方法: --新建临时表以存储正确的顺序 create table A_2 as select (column1,col ...