0

ここで説明するような設定ビューと「関連する」設定クラスを作成しています:

方法: Windows Phone の設定ページを作成する

これは私の最初の試みではありませんが、IsolatedStorageSettings から ApplicationSettings を取得しようとすると、mscorlib.dll で 'System.IO.FileNotFoundException' 型の初めての例外が発生しました。これは、ビュー コード ビハインドおよび関連するビューモデルで発生し、アプリの他の部分 (つまり、コード ビハインドまたは他のビューのビューモデル) で正常に動作します。どうして???

コードは次のとおりです。

AppSettings.cs

using System;
using System.Collections.Generic;
using System.IO.IsolatedStorage;
using System.Windows;

namespace MetanoInLombardia
{
    public class AppSettings
    {
        IsolatedStorageSettings settings;

        const string IsAutoUpdateOn_KeyName = "AutoUpdateOn"; 

        const bool IsAutoUpdateOn_Default = true;

        public AppSettings()
        {
            try
            {
                if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
                {
                    settings = IsolatedStorageSettings.ApplicationSettings;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Exception while using IsolatedStorageSettings in AppSettings(): " + e.ToString());
            }
        }

        public void AddOrUpdateValue(string Key, Object value)
        {
            if (settings.Contains(Key))
            {
                if (settings[Key] != value)
                {
                    settings[Key] = value;
                    Save();
                }
            }
            else
            {
                settings.Add(Key, value);
                Save();
            }
        }

        public T GetValueOrDefault<T>(string Key, T defaultValue)
        {
            if (!settings.Contains(Key))
            {
                AddOrUpdateValue(Key, defaultValue);
            }
            return (T)settings[Key];
        }

        public void Save()
        {
            settings.Save();
        }

        public bool IsAutoUpdateOn
        {
            get
            {
                return GetValueOrDefault<bool>(IsAutoUpdateOn_KeyName, IsAutoUpdateOn_Default);
            }
            set
            {
                AddOrUpdateValue(IsAutoUpdateOn_KeyName, value);
            }
        }
    }
}

SettingsViewModel.cs [抽出]

using GalaSoft.MvvmLight;
using MetanoInLombardia.Model;
using System;
using System.Windows;
using System.IO.IsolatedStorage;

namespace MetanoInLombardia.ViewModel
{
    public class SettingsViewModel : ViewModelBase
    {
        private readonly IDataService _dataService;
        private AppSettings settings = null;

        public SettingsViewModel(IDataService dataService)
        {
            _dataService = dataService;

            _dataService.GetApplicationTitle(
                (item, error) =>
                {
                    if (error != null)
                    {
                        return;
                    }
                    ApplicationTitle = item.Title;
                });

            this.settings = new AppSettings();
        }
...
    }
}

AppSettings.cs で例外が連続して発生しました

settings = IsolatedStorageSettings.ApplicationSettings;
4

0 に答える 0