一 写在开头
1.1 本文内容
本文主要内容是使用WPF来实现几个简单的界面。

二 登录窗口小例子
2.1 实现代码
XAML代码:

 <Window x:Class="LoginDialog.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Login" Height="200" Width="400">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="0" Grid.Column="0" Text="用户名:" FontSize="18px"></TextBlock>
<TextBox Name="tbUserName" Margin="5" Grid.Row="0" Grid.Column="1"></TextBox>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="1" Grid.Column="0" Text="密码:" FontSize="18px"></TextBlock>
<PasswordBox Name="pbPassword" Margin="5" Grid.Row="1" Grid.Column="1"></PasswordBox>
<Button Name="btnLogin" Margin="10" Grid.Row="2" Grid.Column="0" Content="登录" FontSize="18px" Click="btnLogin_Click"></Button>
<Button Name="btnCancel" Margin="10" Grid.Row="2" Grid.Column="1" Content="取消" FontSize="18px"></Button>
</Grid>
</Grid>
</Window>

逻辑代码:

 private void btnLogin_Click(object sender, RoutedEventArgs e)
{
string username = tbUserName.Text;
string password = pbPassword.Password; if ((username == "") || (password == ""))
{
MessageBox.Show("用户名或密码不能为空!");
}
else
{
if ((username == "admin") && (password == ""))
{
MessageBox.Show("登录成功!");
}
else
{
MessageBox.Show("用户名或密码错误!");
}
}
}

上面的逻辑代码中有个需要注意的地方。在WPF中TextBox和PasswordBox这两个输入框在用户没有输入的时候返回值为空字符串(即"")而不是null!

2.2 效果图

三 连连看游戏界面的实现
3.1 实现代码
XAML代码:

 <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="600" Width="600" Loaded="Window_Loaded">
<Grid>
<Grid Name="gridGame"></Grid>
</Grid>
</Window>

为什么XAML里只有一个名为gridGame的Grid布局?因为界面中的元素在下面的逻辑代码中动态地创建了。

逻辑代码:

 private void Window_Loaded(object sender, RoutedEventArgs e)
{
// 修改窗口标题
this.Title = "连连看"; // 动态设定gridGame为10行10列
for (int i = ; i < ; i++)
{
RowDefinition rd = new RowDefinition();
gridGame.RowDefinitions.Add(rd); ColumnDefinition cd = new ColumnDefinition();
gridGame.ColumnDefinitions.Add(cd);
} // 随机数产生器
Random random = new Random(); // 随机产生图片名称并填入10行10列的格子中
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
Image img = new Image();
int imgNum = random.Next(, );
img.Source = new BitmapImage(new Uri("img/" + imgNum + ".png", UriKind.Relative));
Grid.SetRow(img, i);
Grid.SetColumn(img, j);
gridGame.Children.Add(img);
}
}
}

3.2 效果图

四 Windows计算器界面的实现
4.1 实现代码
XAML代码:

 <Window x:Class="计算器.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="计算器" Height="332" Width="228">
<Grid>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="查看"></MenuItem>
<MenuItem Header="编辑"></MenuItem>
<MenuItem Header="帮助"></MenuItem>
</Menu>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></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>
<TextBlock Grid.Row="0" Grid.Column="0" FontSize="18px" TextAlignment="Right" Text="0" Grid.ColumnSpan="5"></TextBlock>
<Button Grid.Row="1" Grid.Column="0" Content="MC"></Button>
<Button Grid.Row="1" Grid.Column="1" Content="MR"></Button>
<Button Grid.Row="1" Grid.Column="2" Content="MS"></Button>
<Button Grid.Row="1" Grid.Column="3" Content="M+"></Button>
<Button Grid.Row="1" Grid.Column="4" Content="M-"></Button>
<Button Grid.Row="2" Grid.Column="0" Content="&lt;--"></Button>
<Button Grid.Row="2" Grid.Column="1" Content="CE"></Button>
<Button Grid.Row="2" Grid.Column="2" Content="C"></Button>
<Button Grid.Row="2" Grid.Column="3" Content="±"></Button>
<Button Grid.Row="2" Grid.Column="4" Content="√"></Button>
<Button Grid.Row="3" Grid.Column="0" Content="7"></Button>
<Button Grid.Row="3" Grid.Column="1" Content="8"></Button>
<Button Grid.Row="3" Grid.Column="2" Content="9"></Button>
<Button Grid.Row="3" Grid.Column="3" Content="/"></Button>
<Button Grid.Row="3" Grid.Column="4" Content="%"></Button>
<Button Grid.Row="4" Grid.Column="0" Content="4"></Button>
<Button Grid.Row="4" Grid.Column="1" Content="5"></Button>
<Button Grid.Row="4" Grid.Column="2" Content="6"></Button>
<Button Grid.Row="4" Grid.Column="3" Content="*"></Button>
<Button Grid.Row="4" Grid.Column="4" Content="1/x"></Button>
<Button Grid.Row="5" Grid.Column="0" Content="1"></Button>
<Button Grid.Row="5" Grid.Column="1" Content="2"></Button>
<Button Grid.Row="5" Grid.Column="2" Content="3"></Button>
<Button Grid.Row="5" Grid.Column="3" Content="-"></Button>
<Button Grid.Row="5" Grid.RowSpan="2" Grid.Column="4" Content="="></Button>
<Button Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" Content="0"></Button>
<Button Grid.Row="6" Grid.Column="2" Content="."></Button>
<Button Grid.Row="6" Grid.Column="3" Content="+"></Button>
</Grid>
</DockPanel>
</Grid>
</Window>

4.2 效果图

WPF布局的应用的更多相关文章

  1. 对比MFC资源文件谈谈WPF布局方式

    对比MFC资源文件谈谈WPF布局方式 MFC方式 对于传统的MFC基于UI的应用程序设计通常分两步走,首先是设计UI,使用的是RC文件,然后是代码文件,对RC文件进行操作,如下面Figure 1 的基 ...

  2. WPF快速入门系列(1)——WPF布局概览

    一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...

  3. 学习WPF——WPF布局——了解布局容器

    WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归 ...

  4. WPF 布局总结

    一.WPF布局原理 WPF窗口只能包含单个元素,为在WPF窗口中放置多个元素,需要放置一个容器,让后在容器中添加其他元素.“理想的”WPF窗口需遵循以下几个原则: 1.不应显示设定元素的尺寸.元素应当 ...

  5. 浅谈 WPF布局

    我们首先来了解一下图形化用户界面(Graphic User Interface)也就是我们常常听到的GUI.举个简单的例子,同样是数据,我们可以用控制台程序加格式控制符等输出,但是这些都不如GUI来的 ...

  6. WPF布局系统[转]

    转自:http://www.cnblogs.com/niyw/archive/2010/10/31/1863908.html前言 前段时间忙了一阵子Google Earth,这周又忙了一阵子架构师论文 ...

  7. 意外地解决了一个WPF布局问题

    原文:意外地解决了一个WPF布局问题 今天做了一个小测试,意外地将之前的一个困扰解决了,原问题见<WPF疑难杂症会诊>中的“怎么才能禁止内容撑大容器?” 以前我是在外侧嵌套Canvas容器 ...

  8. WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系

    WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系: 1.Canvas/WrapPanel控件: 其子控件的HorizontalAlign ...

  9. WPF 10天修炼 第四天- WPF布局容器

    WPF布局 WPF的窗口也就是Window类,是一个内容控件,该控件派生自ContentControl.内容控件有一个Content属性,该属性有一个限制,只能放置一个用户界面元素,或一个字符串.为了 ...

  10. WPF布局控件常用属性介绍

    WPF布局控件常用属性介绍 其它 | 作者:慧都控件网 | 2011-04-06 13:41:57| 阅读 0次 有用(0) 评论(0)   概述:WPF布局控件都是派生自System.Windows ...

随机推荐

  1. 【PAT】B1016 部分A+B

    水题 以字符和字符串形式储存输入,比较,计算出两个个数的D的个数,用for循环拼成P,相加得出结果 #include<stdio.h> int main(){ char A[20],DA, ...

  2. #022 Python 实验课

    拍7游戏 描述 “拍7游戏”规则是:一堆人围成一圈,开始时,任意指定一人说出数字“1”后,一圈人按顺时针方向,每人按整数由小到大的顺序一人一个地报出后续数字“2”.“3”......,当遇到为“7”的 ...

  3. 文本分类实战(十)—— BERT 预训练模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  4. python小白——进阶之路——day2天-———容器类型数据(list,set ,tuple,dict,str)

    #容器类型数据 : list tuple # ###列表的特性:可获取,可修改,有序 # 声明一个空列表 listvar = [] print(listvar,type(listvar)) # (1) ...

  5. 通过C#学Proto.Actor模型》之Remote

    Proto.Actor中提供了基于tcp/ip的通迅来实现Remote,可以通过其Remot实现对Actor的调用. 先来看一个极简单片的远程调用. 码友看码: 引用NuGet包 Proto.Acto ...

  6. Linux下安装 Python3

    前言 Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如centos下的yum就是python2 ...

  7. 访问网站出现 HTTP ERROR 500 该网页无法正常运作

    项目在本地环境配置好后访问出现如下图所示: 经过查看php日志文件发现问题在于数据库连接错误,如下图: 修改成本地的数据库用户名和密码,重启服务器即可正常访问.

  8. jenkins部署net core初探

    一步一步,小心翼翼吖.看了好几个博客,摸索了两天了,才搭建成功,不容易,先写篇文章记下来,hhhhhhhhhhhh 相关环境配置 服务器:centos7 源代码管理器:git 技术选型:net cor ...

  9. iso data 聚类算法

    isodata算法就是先拟定一个预期类,再选取一些聚类中心,通过不断合并或者分裂聚类,达到分类的目的 关键就是在于,如何分裂,合并 要合并或者分裂 必须要确定一些指标 所以第一步就是要确定 某些指标 ...

  10. 【C/C++】任意进制转换

    进制转换:R进制->10进制:10进制->R进制. #include<bits/stdc++.h> using namespace std; /*函数:r进制转换成10进制*/ ...