private async void EditItemAsync(PasswordViewItem item)
        {
            try
            {
                if (item == null)
                {
                    return;
                }
                if (!ReenterPassword())
                {
                    return;
                }
                var oldurl = item.Password.Url;
                var w      = new EditWindow(this, Properties.Resources.TITLE_EDIT, item.Image, item.Password);
                if (w.ShowDialog() == true)
                {
                    passwordRepository.Update(w.Password);
                    item.Update(w.Password);
                    UpdateControls();
                    if (!string.Equals(oldurl, w.Password.Url))
                    {
                        if (thumbnailCache != null &&
                            !string.IsNullOrEmpty(item.Password.Url))
                        {
                            var image    = imageKey16x16;
                            var filename = await thumbnailCache.GetImageFileNameAsync(item.Password.Url);

                            if (!string.IsNullOrEmpty(filename))
                            {
                                item.Image = new BitmapImage(new Uri(filename));
                            }
                        }
                    }
                    SortListView();
                    listView.ScrollIntoView(item);
                }
            }
            catch (Exception ex)
            {
                HandleError(ex);
            }
        }
        private async void AddItemAsync()
        {
            try
            {
                if (!ReenterPassword())
                {
                    return;
                }
                EditWindow w = new EditWindow(this, Properties.Resources.TITLE_ADD, imageKey16x16);
                if (w.ShowDialog() == true)
                {
                    passwordRepository.Add(w.Password);
                    var item = new PasswordViewItem(w.Password, imageKey16x16);
                    listView.Items.Add(item);
                    listView.SelectedItem = item;
                    listView.ScrollIntoView(item);
                    UpdateControls();
                    if (thumbnailCache != null &&
                        !string.IsNullOrEmpty(w.Password.Url))
                    {
                        var filename = await thumbnailCache.GetImageFileNameAsync(w.Password.Url);

                        if (!string.IsNullOrEmpty(filename))
                        {
                            item.Image = new BitmapImage(new Uri(filename));
                        }
                    }
                    SortListView();
                    listView.ScrollIntoView(item);
                }
            }
            catch (Exception ex)
            {
                HandleError(ex);
            }
        }