我的程序包含许多步骤。假设每个步骤都在tabpage
中,完成后,用户选择“下一步”。
存储这些信息的最佳/最快方式是什么?
答案 0 :(得分:1)
我通常会说这将是一个保留所有数据的模型 - 一旦用户在最后一页上说“ok”,它就会被转发到处理方法。 BUt那么这在很大程度上取决于实际的使用场景,所以这可能不是最好的方式。
答案 1 :(得分:0)
我创建了一个单独的类,它在各个页面上具有“答案”的属性。不确定这是否是最好的方法,但它对我来说非常有效。用户可以在页面之间来回切换并存储答案。对普雷斯科特来说,如果他们需要稍后回来,也许你可以将他们的部分形式保存为XML。
答案 2 :(得分:0)
创建一个代表向导的viewmodel,并在该viewmodel中创建与您的步骤相关的所有数据。您还可以跟踪当前步骤,并实现一些方法来启用/禁用下一个和上一个按钮等。
您的实际向导窗口和选项卡(视图)然后都可以使用向导视图模型(数据)。
答案 3 :(得分:0)
如果您只想保留此信息以执行程序,我会选择In-Memory Repository,例如
namespace Repository {
public class InMemoryRepository : IRepository{
static readonly List<Item> items = new List<Item> {
new Item("CurrentTaxRate", 20m),
new Item("CurrentAmount", 100m)
};
public Item Get(string name) {
return items.Single(x => x.Name == name);
}
}
}
public class Item {
public Item(string name, decimal value) {
Name = name;
Value = value;
}
public string Name { get; private set; }
public decimal Value { get; private set; }
}
您可以轻松地添加,删除或编辑功能,并使用您自己的“UserData”类型替换此处的“项目”。
使用依赖注入来获取此信息
public class TaxRate : ITaxRate {
private readonly IRepository repository;
public TaxRate(IRepository repository) {
this.repository = repository;
}
public decimal Get() {
var item = repository.Get("CurrentTaxRate");
return item.Value;
}
}