WPF布局的应用
一 写在开头
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="<--"></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布局的应用的更多相关文章
- 对比MFC资源文件谈谈WPF布局方式
对比MFC资源文件谈谈WPF布局方式 MFC方式 对于传统的MFC基于UI的应用程序设计通常分两步走,首先是设计UI,使用的是RC文件,然后是代码文件,对RC文件进行操作,如下面Figure 1 的基 ...
- WPF快速入门系列(1)——WPF布局概览
一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...
- 学习WPF——WPF布局——了解布局容器
WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归 ...
- WPF 布局总结
一.WPF布局原理 WPF窗口只能包含单个元素,为在WPF窗口中放置多个元素,需要放置一个容器,让后在容器中添加其他元素.“理想的”WPF窗口需遵循以下几个原则: 1.不应显示设定元素的尺寸.元素应当 ...
- 浅谈 WPF布局
我们首先来了解一下图形化用户界面(Graphic User Interface)也就是我们常常听到的GUI.举个简单的例子,同样是数据,我们可以用控制台程序加格式控制符等输出,但是这些都不如GUI来的 ...
- WPF布局系统[转]
转自:http://www.cnblogs.com/niyw/archive/2010/10/31/1863908.html前言 前段时间忙了一阵子Google Earth,这周又忙了一阵子架构师论文 ...
- 意外地解决了一个WPF布局问题
原文:意外地解决了一个WPF布局问题 今天做了一个小测试,意外地将之前的一个困扰解决了,原问题见<WPF疑难杂症会诊>中的“怎么才能禁止内容撑大容器?” 以前我是在外侧嵌套Canvas容器 ...
- WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系
WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系: 1.Canvas/WrapPanel控件: 其子控件的HorizontalAlign ...
- WPF 10天修炼 第四天- WPF布局容器
WPF布局 WPF的窗口也就是Window类,是一个内容控件,该控件派生自ContentControl.内容控件有一个Content属性,该属性有一个限制,只能放置一个用户界面元素,或一个字符串.为了 ...
- WPF布局控件常用属性介绍
WPF布局控件常用属性介绍 其它 | 作者:慧都控件网 | 2011-04-06 13:41:57| 阅读 0次 有用(0) 评论(0) 概述:WPF布局控件都是派生自System.Windows ...
随机推荐
- centos简单的后台运行
# 忽略输出文件 nohup java FileTest > /dev/null 2>&1 &
- 阿里云上的Centos 7.6的一次Nginx+Mysql+PHP7.3 部署
阿里云申请了一台服务器 Centos 7.6,每次安装都要上网找一大堆教程,因为不熟悉,因为总是忘记. 所以,有时间的时候,还是记录下自己的学习过程,有助于下次的问题解决. 我先总结下: 1)安装VS ...
- 【English】20190418
interested 感兴趣的[ˈɪntrəstɪd] arrange your time 安排自己时间[əˈreɪndʒ] If interested, please arrange your ti ...
- SVN服务器+客户端安装和配置
先安装客户端.然后安装语言包,然后去小乌龟svn里设置语言为中文. svnServer推荐 subversion和 VisualSVN 网盘下载 TortoiseSVN客户端 汉化包网 ...
- js 实现各浏览器全屏
现代浏览器包括ie11,可以直接用h5的全屏api实现 低版本的IE需要通过ActiveX插件实现: 代码实现 <!DOCTYPE html> <html> <head& ...
- 算法笔记-状压dp
状压dp 就是把状态压缩的dp 这样还是一种暴力但相对于纯暴力还是优雅的多. 实际上dp就是经过优化的暴力罢了 首先要了解位运算 给个链接吧 [https://blog.csdn.net/u01337 ...
- iview render input每输入一个字符就会自动跳出焦点
假如你绑定的table的数据是tableData,input数据改变的时候你把整行的数据替换掉,就不会造成table重新渲染,导致input失焦了 h('InputNumber', { props: ...
- 对List集合嵌套了map集合对double值进行排序
/*[ { "repairo": "asda", "num": 88.71 }, { "repairo": " ...
- 证明与计算(4): 完美散列函数(Perfect Hash function)
原文:wiki: 完美散列函数 假设,写一个SQL语句解析器,词法分析对SQL语句解析,把语句分成了多个token,一般这个时候会需要查询这个token是否是一个关键字token. 例如keyword ...
- Kubernetes — 重新认识Docker容器
这一次,我要用+Docker+部署一个用+Python+编写的+Web+应用.这个应用的代码部分(app.py)非常简单: from flask import Flask import socket ...