我目前正在为Pen&Paper小组的wpf字符表设计师工作。我已经做过设计和计算,现在我试图找到一种正确保存/加载字符的方法。我已经设法在启动时加载了一些xml文件,以使用默认值填充我的字符表设计器。我选择为每种“项目”(例如武器,技能,库存等)都拥有一个xml文件,并希望保持这种状态-至少目前如此,因为要通过多种文件来更改某些内容要多得多比仅拥有一个很大的文件更舒适。
我认为SaveFileDialog
可能会派上用场,但是我发现它只能保存一个文件,这给了我一些选择:
SaveFileDialog
的文件夹,而不要使用Path.GetDirectoryName(saveFileDialog.FileName);
之类的名称,因为该文件夹必须已经存在。CommonOpenFileDialog
中的Microsoft.WindowsAPICodePack.Dialogs
。我还没有尝试过,因为我在组装时遇到了麻烦。我也不是很了解。会适合这种情况吗?.zip
。我已经看到StackOverflow上的其他人采用这种方式。还没有尝试过,因为这似乎并不是解决问题的“干净”方法。.zip
,所以我想在这种情况下我应该只使用zip。在WPF中通常如何使用多个文件进行保存/加载方面,我几乎没有经验。我有什么选择?
答案 0 :(得分:1)
正如罗恩建议的那样,您应该研究使用FolderBrowseDialog
名称空间中的System.Windows.Forms
。
假设您有一个TextBox
和两个名为BtnBrowse
的按钮,可以浏览文件夹,而另外两个BtnSave
则可以保存文件。
看起来像这样:
然后,在Browse
按钮中,使用它来让用户选择文件夹路径,然后使用保存按钮进行保存。
public partial class MainWindow : Window
{
FolderBrowserDialog folderBrowserDialog = null;
List<string> filesToSave = null;
public MainWindow()
{
InitializeComponent();
folderBrowserDialog = new FolderBrowserDialog();
filesToSave = new List<string>
{
"A.txt",
"B.txt",
"C.txt"
};
}
private void BtnBrowse_Click(object sender, RoutedEventArgs e)
{
if (folderBrowserDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
TxtFolderPath.Text = folderBrowserDialog.SelectedPath;
}
}
private void BtnSave_Click(object sender, RoutedEventArgs e)
{
foreach (var file in filesToSave)
{
var path = Path.Combine(TxtFolderPath.Text, file);
File.WriteAllText(path, string.Format("Contents of {0}", file));
}
}
}