public ViewModel(WidgetId id) : base(id) { Settings = id.GetSettings() as Settings; if (Settings == null) { return; } IsPaused = Settings.Freeze; ImageUrl = Settings.ImageUrl; TogglePlayPause = new RelayCommand(TogglePlayPauseExecute); Drop = new RelayCommand <DragEventArgs>(DropExecute); _random = new Random(); _changeTimer = new DispatcherTimer { Interval = Settings.ChangeInterval }; _changeTimer.Tick += (sender, args) => NextImage(); _directoryWatcher = new DirectoryWatcher(new DirectoryWatcherSettings { WatchFolders = new List <string> { Settings.RootPath }, FileExtensionWhitelist = ImageHelper.SupportedExtensions, MaxSize = Settings.FileFilterSize, Recursive = Settings.Recursive, DetectNewFiles = false, DetectModifiedFiles = false }); _directoryWatcher.CheckDirectoriesForNewFiles(); NextImage(); if (Settings.Recursive) { _directoryWatcher.CheckDirectoriesForNewFilesAsync(); } _changeTimer.Start(); }