private void SelectedProvider_Event(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         var item = e.AddedItems[0] as RecogEngine;
         this.CurrentProvider.Text = item.RecogEngineName;
         var idx = ProviderList.IndexOf(item);
         var cnt = ProviderList.Count;
         if (idx >= 0)
         {
             var minShow = MinItemShowed;
             var maxShow = MinItemShowed + NumberItemShowed - 1;
             var midShow = (minShow + maxShow) / 2;
             var diff    = idx - midShow;
             if (diff != 0)
             {
                 var         newMinShow = MinItemShowed;
                 RecogEngine scrollItem = null;
                 if (diff < 0)
                 {
                     newMinShow = Math.Max(0, MinItemShowed + diff);
                 }
                 else
                 {
                     maxShow    = Math.Min(cnt - 1, MinItemShowed + diff + NumberItemShowed - 1);
                     newMinShow = Math.Max(0, maxShow - NumberItemShowed + 1);
                 }
                 if (newMinShow != MinItemShowed)
                 {
                     int scrollidx = 0;
                     if (diff < 0)
                     {
                         scrollItem = ProviderList[newMinShow];
                         scrollidx  = newMinShow;
                     }
                     else
                     {
                         scrollItem = ProviderList[maxShow];
                         scrollidx  = maxShow;
                     }
                     MinItemShowed = newMinShow;
                     this.ViewOfProvider.ScrollIntoView(scrollItem);
                 }
             }
         }
     }
 }
        public void Closing()
        {
            if (DoShowNewBooru == Visibility.Visible)
            {
                CancelBooru();
            }
            else
            {
                string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

                path = Path.Combine(path, "BooruReader");

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                TextWriter textWriter = new StreamWriter(path + @"\Providers.xml");

                XmlSerializer x = new XmlSerializer(_providerList.GetType());
                x.Serialize(textWriter, _providerList);
                textWriter.Close();

                if (GlobalSettings.Instance.MainScreenVM != null)
                {
                    GlobalSettings.Instance.MainScreenVM.SettingsOpen = false;
                }

                var index = ProviderList.IndexOf(GlobalSettings.Instance.CurrentBooru);
                if (index >= 0)
                {
                    GlobalSettings.Instance.CurrentBooruIndex = index;
                }
            }
            GlobalSettings.Instance.SaveSettings();
        }