在调用之间实现数据存储?(C#-WPF)
我有一个ALPHA应用程序,它允许您从和XPS文件中获取一个模糊字体,并存储.odttf文件以在Silverlight中使用。这个应用程序“工作”就像它在锡罐上所说的一样,尽管是以一种非常粗糙的方式 在清理此工具以创建BETA版的过程中,我可以跨越一个问题。我希望应用程序以向导的方式进行布局,从用户那里收集数据,比如使用哪种字体,在哪里保存提取的文件,等等 在当前的实现中,这都是在代码隐藏中完成的(实际上它调用了一个helper类)。但实现一个向导意味着每个数据段都收集在不同的“页面”上。我不想使用页面构造函数简单地传递数据,因为我正在尝试实现MVVM,其目的是保持代码的整洁 我想我正在寻找的是一个数据存储在代码中的持久化windows。这样,我就可以在我的窗口(视图)中获取数据,通过绑定将其传递给我的viewmodel,并将其发送到windows模型(数据类)以存储在某处 我可以使用数据库或XML文件,但对于我需要的几条信息来说,这似乎是一个强大的存储 总之,有没有一种方法可以让内存中的对象持久化窗口调用,并且可以被多个模型(类)引用在调用之间实现数据存储?(C#-WPF),c#,wpf,data-access,C#,Wpf,Data Access,我有一个ALPHA应用程序,它允许您从和XPS文件中获取一个模糊字体,并存储.odttf文件以在Silverlight中使用。这个应用程序“工作”就像它在锡罐上所说的一样,尽管是以一种非常粗糙的方式 在清理此工具以创建BETA版的过程中,我可以跨越一个问题。我希望应用程序以向导的方式进行布局,从用户那里收集数据,比如使用哪种字体,在哪里保存提取的文件,等等 在当前的实现中,这都是在代码隐藏中完成的(实际上它调用了一个helper类)。但实现一个向导意味着每个数据段都收集在不同的“页面”上。我不想
谢谢 最好的方法是对所有页面使用相同的ViewModel,然后如果您以后想使用它,则将其序列化
public class MyViewModel
{
// Properties to be serialized
public string MyViewModelProperty1 = "";
public string MyViewModelProperty2 = "";
// Save to file.
public virtual bool Save(string viewmodelFilePath)
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(viewmodelFilePath));
StreamWriter write = new StreamWriter(viewmodelFilePath);
XmlSerializer xml = new XmlSerializer(GetType());
xml.Serialize(write, this);
write.Close();
}
catch
{
return false;
}
return true;
}
// Load from file.
public static object Load(Type type, string viewmodelFilePath)
{
StreamReader reader;
object settings;
XmlSerializer xml = new XmlSerializer(type);
try
{
reader = new StreamReader(viewmodelFilePath);
viewmodel = xml.Deserialize(reader);
reader.Close();
}
catch
{
viewmodel =
type.GetConstructor(System.Type.EmptyTypes).Invoke(null);
}
return viewmodel;
}
}
Petzold book的原始代码用于存储数据并从所有视图访问数据的静态类或单例?我曾想到过这一点,但MVVM模型并非如此,如果我继续这样做,我也可能不使用MVVM。当然,在第一个窗口打开之前,必须有一种方法来创建一个对象,实现中的其他类可以访问该对象。谢谢你的意见!你为什么说MVVM不是真的?MVVM不限制您在不同的视图中使用相同的viewModel…抱歉,true是一个错误的词,但鉴于我对MVVM的理解,我更希望每个模型有一个模型视图。我知道你在做什么,这是一个关于单一模型的好建议,谢谢分享!虽然我将实际尝试实现内存中的数据存储,但您的方法本质上就是我在上下文中寻找的方法,因此我已将您的答复标记为答案!干杯您不认为在几个类之间共享内存数据的序列化有点过分吗?有可能写入这样的类吗?