保存WPF应用程序页面的状态

时间:2012-12-02 21:59:24

标签: c# wpf wpf-controls savestate

我正在使用WPF创建软件,并且在软件中,用户可以加载图像并配置地图。

基本上,一旦加载了图像(地图),用户就可以添加其他图像(如宝藏或怪物的图片等)将它们拖放到地图的图像中。

当用户关闭软件并重新打开它时,我希望打开最后一个图像,并在关闭应用程序之前添加UI元素,就像用户设置的方式一样。

我能想到的一种方法是将图像文件存储在字节数组中,或保存文件位置,将其他UI元素位置保存在文本文件中,并在每次加载应用程序时进行检查。

但是,有没有更简单的方法来解决这个问题?有没有办法可以存储WPF应用程序页面的状态?

1 个答案:

答案 0 :(得分:1)

也许您可以在退出时保存Windows xaml并在应用程序启动时重新加载。

    public MainWindow()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainWindow_Loaded);
        Closing += new CancelEventHandler(MainWindow_Closing);
    }


    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
       LoadExternalXaml();
    }

    void MainWindow_Closing(object sender, CancelEventArgs e)
    {
        SaveExternalXaml();
    }


    public void LoadExternalXaml()
    {
        if (File.Exists(@"C:\Test.xaml"))
        {
            using (FileStream stream = new FileStream(@"C:\Test.xaml", FileMode.Open))
            {
                this.Content = XamlReader.Load(stream);
            }
        }
    }

    public void SaveExternalXaml()
    {
        using (FileStream stream = new FileStream(@"C:\Test.xaml", FileMode.Create))
        {
            XamlWriter.Save(this.Content, stream);
        }
    }