コード例 #1
0
        public SteamPaverViewModel()
        {
            _refreshCommand = AsyncRelayCommand.Lazy(() => Refresh(), null, true);
            GameDatas       = new ObservableCollectionEx <GameData>();

            var cachedGameDatas = CacheManager.LoadFromCache <GameData>()
                                  .OrderBy(o => o.Installed ? 0 : 1)
                                  .ThenBy(o => o.Name);

            //var cachedGameDatas = new GameData[] { CacheManager.LoadFromCache<GameData>($"GameData_{219740}") };


            foreach (var cachedGameData in cachedGameDatas)
            {
                GameDatas.Add(cachedGameData);
            }

            GameDatas.CollectionChanged += (o, e) =>
            {
                switch (e.Action)
                {
                case NotifyCollectionChangedAction.Add:

                    foreach (GameData item in e.NewItems)
                    {
                        item.SaveToCache();
                    }
                    break;

                case NotifyCollectionChangedAction.Remove:
                    foreach (GameData item in e.OldItems)
                    {
                        item.RemoveFromCache();
                    }
                    break;

                default:
                    break;
                }
            };

            UserData = CacheManager.LoadFromCache <UserData>().FirstOrDefault();
            if (UserData == null)
            {
                UserData = new UserData();
                UserData.SaveToCache();
            }


            UserData.PropertyChanged += (o, e) =>
            {
                UserData.SaveToCache();
            };
            App.Current.Exit += (o, e) =>
            {
                UserData.SaveToCache();
                if (SelectedGameData != null)
                {
                    SelectedGameData.SaveToCache();
                }
            };
        }