本文转自 sun8134 博客园博客,原文链接:http://www.cnblogs.com/sun8134/archive/2010/07/13/1776489.html ,如需转载请自行联系原作者
添加WPF这个分类有段时间了
至今分类里一篇随笔都没有(主要是啥也不会…)
前两天正好流通点书,需要个程序分配地点,试试效果。
当然用WPF还有其他的考虑…
.net 3.5安装包200多M
.net 4.0只有40多M
当然装少的了…
记录下中间遇到的小问题吧:
1,窗体传值
几个 窗体间传值是winform最常见的问题,其实iWPF和winform方法是一样的,只要:
public string guancang = " ";
然后在其他窗体里
selectmoveto win2 = new selectmoveto() win2.Owner = this; win2.ShowDialog(); bookmove.Text = win2.guancang;
向窗体传值的话,只要改下构造函数就可以了
不过要注意哦,别像我一次写成了
Window win2 = new selectmoveto()
这样自定义的变量可就不存在了…
2,登陆框
需要小改下App.xaml
<Application x:Class="wpftest.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="Application_Startup" ShutdownMode="OnMainWindowClose" >
然后在App.xaml.cs里
private void Application_Startup(object sender, StartupEventArgs e) { MainWindow winMain = new MainWindow(); Window1 winDlg = new Window1(); bool? dlgResult = winDlg.ShowDialog(); if (dlgResult.HasValue && dlgResult.Value) { winMain.Show(); } else { winMain.Close(); } }
注意主窗体一定要先创建,不然登陆后整个程序就退出了…
另外,登陆窗体的返回值我用的是
this.DialogResult = true; 和 this.DialogResult = false; 当然也可以自己用其他的…
3,在code里制定控件的颜色(16进制)
直接在xaml里指定颜色(16进制),其实很简单,直接赋值就可以
<TextBlock Text="索取号" Name="call_no" Foreground="#FFE8E2E2"/> 不过要在code里指定么…
目前我还没找到有什么好的方法…
指定颜色可以用:
new SolidColorBrush(Colors.Red);
或者
new SolidColorBrush(Color.FromArgb(byte a,byte r,byte g ,byte b));
不过要想指定16进制的颜色么…
看别人给出的办法是
<TextBlock x:Name="hide" Visibility="Collapsed" Background="#FF959595" />
然后
this.call_no.Foreground = (SolidColorBrush)hide.Foreground;