简单案例:创建一个字窗体
实现部分需求
1、固定窗口大小
ResizeMode="NoResize"
2、调整打开时显式的位置
WindowStartupLocation="CenterScreen"
3、窗口最大化
WindowState="Maximized"
窗体间传值
如何在子窗体内获取主窗体text的名字
子窗体定义属性
public string UserName { get; set; }
对属性内容进行赋值
string name = btn.Name;
ChildrenWindow childrenWindow = new ChildrenWindow();
childrenWindow.UserName = name;
定义事件进行触发
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.tettext.Text = UserName;
}
子窗体内值传递到主窗体
方式相同
单例模式
常规方式创建的窗口会出现窗口内容不唯一的情况
子窗体程序栏内容:
public partial class ChildrenWindow : Window
{
private ChildrenWindow()
{
InitializeComponent();
}
private static ChildrenWindow _instance;
public static ChildrenWindow Instance
{
get {
if (ReferenceEquals(_instance,null))
{
_instance = new ChildrenWindow();
}
return _instance; }
}
}
主窗体点击事件内容:
private void btn_Click(object sender, RoutedEventArgs e)
{
ChildrenWindow.Instance.Show();
}
关于单例的子窗体如何获取主窗体的输入值
其实与上述子窗体案例一致,prop生成一个参数属性作为数值储存,然后在主窗口双击输入按钮,生成输入事件;
主窗口数据输入事件:
private void txt_TextChanged(object sender, TextChangedEventArgs e)
{
ChildrenWindow.Instance.textValue = txt.Text;
}
子窗口数据输入事件:
private void Button_Click(object sender, RoutedEventArgs e)
{
string txtx = textValue;
MessageBox.Show(txtx);
}