Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 打开新窗口时加载以前的会话值_C#_Wpf - Fatal编程技术网

C# 打开新窗口时加载以前的会话值

C# 打开新窗口时加载以前的会话值,c#,wpf,C#,Wpf,有一个菜单项单击事件main菜单\u Define\u Material,打开一个名为Material的窗口。我从一个名为txt\u density的文本框中获取信息,我将该信息保存在density中,并通过单击事件材质的确定按钮返回主窗口 我的问题是,如何避免每次打开窗口时传递上一个会话值 我想,一旦设置了密度,每次打开材质窗口时,我都想查看上一个会话的值 private void MainMenu_Define_Material(object sender, RoutedEventArgs

有一个菜单项单击事件main菜单\u Define\u Material,打开一个名为Material的窗口。我从一个名为txt\u density的文本框中获取信息,我将该信息保存在density中,并通过单击事件材质的确定按钮返回主窗口

我的问题是,如何避免每次打开窗口时传递上一个会话值

我想,一旦设置了密度,每次打开材质窗口时,我都想查看上一个会话的值

private void MainMenu_Define_Material(object sender, RoutedEventArgs e)
{
    newWin_material = new Material();            

    newWin_material.btn_OK.Click += new RoutedEventHandler(Material_btn_OK_Click);            

    if (density != -1)
    {
        newWin_material.txt_density.Text = density.ToString();            
    }

    newWin_material.ShowDialog();
}

private void Material_btn_OK_Click(object sender, RoutedEventArgs e)
{
    density = System.Convert.ToSingle(newWin_material.txt_density.Text);    
    newWin_material.Close();            
}

不太清楚该
密度
来自何处,但您可以在uour数据类中插入该字段,您可以在
数据层
上保留该字段,或者类似于
modelview的
ObjectDataProvider

我们那里有许多不同的溶液。基本思想是:

定义公共共享数据存储,并保留所有要在不同窗口之间共享的值

定义一个数据类。我在这里使用了一个
static
类和一个
static
成员
Desnity

public static class DataClass 
{
     public static double Desnsity;
}
在任何窗口中,您都可以访问该字段(读/写),如


希望这是清楚的。

WPF中没有会话的概念。您可以尝试创建一个静态变量来执行此操作,或者创建一个应用程序配置值,或者通过构造函数传递一个参数。

如果您要新建它(例如new Material();),那么它将以零信息开始。这就是new所做的。在ctor中传递值有什么问题

试一试


float distance
在主窗口中,而
txt\u density
在材质窗口中。是否可以共享类似
density
的实例。我使用了引用类,但从未见过这样的例子。
denaity
是一个保存一些数据的字段,我猜可能是
double
。因此,将它插入到某个共享数据类型中,并在应用程序中使用它的单个实例。我想最后,你会引导我找到MVVM,我无法理解,因为我需要示例。如果你在谈论其他事情,你能给我提供一些例子或参考资料吗?我不会引导你去
MVVM
,即使你愿意。我所说的与MVVM
MVVM
没有任何关系。是的,它似乎有效。最后,我想我可以将
DataClass.Density
绑定到
txt\u Density
,我可以在
Material.xaml.cs
中创建另一个ctor:
公共材质(单一密度){//init controls using Density}
DataClass.Density
MainWindow 
{
    private newWin_material = new Material();    // just new it ONCE

    // this may need to be in MainWindow ctor.
    newWin_material.btn_OK.Click += new RoutedEventHandler(Material_btn_OK_Click);