C# 打开新窗口时加载以前的会话值
有一个菜单项单击事件main菜单\u Define\u Material,打开一个名为Material的窗口。我从一个名为txt\u density的文本框中获取信息,我将该信息保存在density中,并通过单击事件材质的确定按钮返回主窗口 我的问题是,如何避免每次打开窗口时传递上一个会话值 我想,一旦设置了密度,每次打开材质窗口时,我都想查看上一个会话的值C# 打开新窗口时加载以前的会话值,c#,wpf,C#,Wpf,有一个菜单项单击事件main菜单\u Define\u Material,打开一个名为Material的窗口。我从一个名为txt\u density的文本框中获取信息,我将该信息保存在density中,并通过单击事件材质的确定按钮返回主窗口 我的问题是,如何避免每次打开窗口时传递上一个会话值 我想,一旦设置了密度,每次打开材质窗口时,我都想查看上一个会话的值 private void MainMenu_Define_Material(object sender, RoutedEventArgs
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
,即使你愿意。我所说的与MVVMMVVM
没有任何关系。是的,它似乎有效。最后,我想我可以将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);