一、布局的嵌套
布局容器StackPanel 、Grid、DockPanel之间可以相互嵌套
这样可以做成各种各样风格的窗体,功能强大
二、菜单Menu
菜单一般放在DockPanel中,设置属性为Top,表示菜单放在窗口顶端
三、工具栏ToolBar
工具栏控件:放入其中的控件都有新的默认外观; 显示图标的方法:Button的Content属性中放Image
资源:图标库
在ToolBar中的控件,与普通控件外观不太一样了。所有的控件都可以用在ToolBar中。点击事件在控件的Clicked事件中
四、多窗口基础
窗口:WPF中每一个窗口都是Windows类的一个子类
Close()关闭当前窗口
Title :窗口标题
ResizeMode: 是否可缩放,枚举类型,NoResize 不可缩放
WindowsState: 窗口是否可以最大化、最小化。枚举类型
WindowStartupLocation:窗口初始位置,枚举类型,CenterScreen--在屏幕中间
1、新建窗口,并弹出事件
创建窗口对象:New;
调用ShowDialog方法,打开窗口
AboutWindow abWin = new AboutWindow();
abWin.ShowDialog();
2、设置初始窗口:
在App.xmal文件中,修改:StartupUri="MainWindow.xaml"> 的MainWindow,改为想要初始显示的窗口名字
3、窗口之间传值,可以通过public属性实现
发送值给弹出的窗口
1)在要接收值的窗口类新建一个同类型公共属性
public string txtSend { get; set; }
2)在主窗口中new弹出的窗口时,将要发送的值赋给new的窗口对象的属性
AboutWindow abWin = new AboutWindow();
abWin.txtSend = txtDoc.Text.Trim();
abWin.ShowDialog();
3)在接收窗口的加载事件中,将公共属性的值赋值给接收的控件即可
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtReceive.Text = txtSend;
}
接收弹出的窗口值也类似,
4)窗口的确定与取消按钮
DialogResult :如果窗口是用ShowDialog打开的,则DialogResult会自动关闭窗口,并把DialogResult的值通过ShowDialog方法的返回值返回主窗口
在主窗口中调用:
LoginWindow lgWin = new LoginWindow();
bool? result = lgWin.ShowDialog();
if (result == true)
{
txtUserName.Text = lgWin.Name;
txtUserPsw.Text = lgWin.Psw;
}
else
return;
5)MessageBox的返回值
用show的重载函数可以完成多种功能,其中一种是在提示对话框生成1~3个控件,并判断点了哪个按键。在if中写入相应的事件
MessageBoxResult rs1 = MessageBox.Show("保存完成", "提示", MessageBoxButton.YesNoCancel);
if(rs1 == MessageBoxResult.OK)
{
}
五、打开、保存对话框:引入命名控件:using Microsoft.Win32;
1、打开对话框类: OpenFileDialog
1)新建对话框对象:OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == true)
{
//选择文件点确定后执行的动作
}
else
return; //点取消或者关闭后的动作
2)属性和方法:用法与winform类似
OpenFileDialog open = new OpenFileDialog(); //新建打开文件对话框
open.InitialDirectory = @"C:\Users\tufeiax\Desktop"; //设置初始路径
open.Filter = "文本文件|*.txt|所有文件|*.*"; //文件过滤器
其他参考Winform