Sonar code smells corrections

This commit is contained in:
BONNEVILLE Geoffroy
2018-06-18 14:58:01 +02:00
parent 978929ba48
commit b1ded11fa5
14 changed files with 63 additions and 512 deletions

View File

@@ -63,10 +63,10 @@ namespace ModernKeePass
/// Invoked when the application is launched normally by the end user. Other entry points
/// will be used such as when the application is launched to open a specific file.
/// </summary>
/// <param name="e">Details about the launch request and process.</param>
protected override async void OnLaunched(LaunchActivatedEventArgs e)
/// <param name="args">Details about the launch request and process.</param>
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
OnLaunchOrActivated(e);
OnLaunchOrActivated(args);
await HockeyClient.Current.SendCrashesAsync(/* sendWithoutAsking: true */);
}
@@ -81,7 +81,7 @@ namespace ModernKeePass
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached)
{
//DebugSettings.EnableFrameRateCounter = true;
DebugSettings.EnableFrameRateCounter = true;
}
#endif
@@ -109,9 +109,9 @@ namespace ModernKeePass
Window.Current.Content = rootFrame;
}
if (e is LaunchActivatedEventArgs)
var lauchActivatedEventArgs = e as LaunchActivatedEventArgs;
if (lauchActivatedEventArgs != null)
{
var lauchActivatedEventArgs = (LaunchActivatedEventArgs) e;
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
@@ -119,20 +119,8 @@ namespace ModernKeePass
// parameter
rootFrame.Navigate(typeof(MainPage), lauchActivatedEventArgs.Arguments);
}
/*else
{
// App is "launched" via the Toast Activation event
UndoEntityDelete(lauchActivatedEventArgs.Arguments);
}*/
}
// This is only available on Windows 10...
/*else if (e is ToastNotificationActivatedEventArgs)
{
var toastActivationArgs = e as ToastNotificationActivatedEventArgs;
// Parse the query string (using QueryString.NET)
UndoEntityDelete(QueryString.Parse(toastActivationArgs.Argument));
}*/
// Ensure the current window is active
Window.Current.Activate();
}

View File

@@ -74,7 +74,7 @@ namespace ModernKeePass.Common
// Create the message dialog and set its content
var messageDialog = new MessageDialog(message, title);
// Add commands and set their callbacks;
// Add commands and set their callbacks
messageDialog.Commands.Add(new UICommand(dismissActionText, cancelCommand));
// Set the command that will be invoked by default

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using Windows.Foundation.Collections;
@@ -15,15 +14,15 @@ namespace ModernKeePass.Common
{
public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)
{
this.CollectionChange = change;
this.Key = key;
CollectionChange = change;
Key = key;
}
public CollectionChange CollectionChange { get; private set; }
public string Key { get; private set; }
}
private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
private readonly Dictionary<string, object> _dictionary = new Dictionary<string, object>();
public event MapChangedEventHandler<string, object> MapChanged;
private void InvokeMapChanged(CollectionChange change, string key)
@@ -37,13 +36,13 @@ namespace ModernKeePass.Common
public void Add(string key, object value)
{
this._dictionary.Add(key, value);
this.InvokeMapChanged(CollectionChange.ItemInserted, key);
_dictionary.Add(key, value);
InvokeMapChanged(CollectionChange.ItemInserted, key);
}
public void Add(KeyValuePair<string, object> item)
{
this.Add(item.Key, item.Value);
Add(item.Key, item.Value);
}
public void AddRange(IEnumerable<KeyValuePair<string, object>> values)
@@ -56,9 +55,9 @@ namespace ModernKeePass.Common
public bool Remove(string key)
{
if (this._dictionary.Remove(key))
if (_dictionary.Remove(key))
{
this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
InvokeMapChanged(CollectionChange.ItemRemoved, key);
return true;
}
return false;
@@ -67,10 +66,10 @@ namespace ModernKeePass.Common
public bool Remove(KeyValuePair<string, object> item)
{
object currentValue;
if (this._dictionary.TryGetValue(item.Key, out currentValue) &&
Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))
if (_dictionary.TryGetValue(item.Key, out currentValue) &&
Equals(item.Value, currentValue) && _dictionary.Remove(item.Key))
{
this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
return true;
}
return false;
@@ -80,53 +79,53 @@ namespace ModernKeePass.Common
{
get
{
return this._dictionary[key];
return _dictionary[key];
}
set
{
this._dictionary[key] = value;
this.InvokeMapChanged(CollectionChange.ItemChanged, key);
_dictionary[key] = value;
InvokeMapChanged(CollectionChange.ItemChanged, key);
}
}
public void Clear()
{
var priorKeys = this._dictionary.Keys.ToArray();
this._dictionary.Clear();
var priorKeys = _dictionary.Keys.ToArray();
_dictionary.Clear();
foreach (var key in priorKeys)
{
this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
InvokeMapChanged(CollectionChange.ItemRemoved, key);
}
}
public ICollection<string> Keys
{
get { return this._dictionary.Keys; }
get { return _dictionary.Keys; }
}
public bool ContainsKey(string key)
{
return this._dictionary.ContainsKey(key);
return _dictionary.ContainsKey(key);
}
public bool TryGetValue(string key, out object value)
{
return this._dictionary.TryGetValue(key, out value);
return _dictionary.TryGetValue(key, out value);
}
public ICollection<object> Values
{
get { return this._dictionary.Values; }
get { return _dictionary.Values; }
}
public bool Contains(KeyValuePair<string, object> item)
{
return this._dictionary.Contains(item);
return _dictionary.Contains(item);
}
public int Count
{
get { return this._dictionary.Count; }
get { return _dictionary.Count; }
}
public bool IsReadOnly
@@ -136,18 +135,18 @@ namespace ModernKeePass.Common
public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
{
return this._dictionary.GetEnumerator();
return _dictionary.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return this._dictionary.GetEnumerator();
return _dictionary.GetEnumerator();
}
public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
{
int arraySize = array.Length;
foreach (var pair in this._dictionary)
foreach (var pair in _dictionary)
{
if (arrayIndex >= arraySize) break;
array[arrayIndex++] = pair;

View File

@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace ModernKeePass.Common
@@ -55,7 +51,7 @@ namespace ModernKeePass.Common
/// <returns>true if this command can be executed; otherwise, false.</returns>
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute();
return _canExecute?.Invoke() ?? true;
}
/// <summary>

View File

@@ -1,11 +1,8 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
@@ -23,7 +20,7 @@ namespace ModernKeePass.Common
internal sealed class SuspensionManager
{
private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();
private static List<Type> _knownTypes = new List<Type>();
private static readonly List<Type> _knownTypes = new List<Type>();
private const string sessionStateFilename = "_sessionState.xml";
/// <summary>
@@ -33,20 +30,14 @@ namespace ModernKeePass.Common
/// <see cref="DataContractSerializer"/> and should be as compact as possible. Strings
/// and other self-contained data types are strongly recommended.
/// </summary>
public static Dictionary<string, object> SessionState
{
get { return _sessionState; }
}
public static Dictionary<string, object> SessionState => _sessionState;
/// <summary>
/// List of custom types provided to the <see cref="DataContractSerializer"/> when
/// reading and writing session state. Initially empty, additional types may be
/// added to customize the serialization process.
/// </summary>
public static List<Type> KnownTypes
{
get { return _knownTypes; }
}
public static List<Type> KnownTypes => _knownTypes;
/// <summary>
/// Save the current <see cref="SessionState"/>. Any <see cref="Frame"/> instances

View File

@@ -8,20 +8,20 @@ namespace ModernKeePass.Converters
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boolean = value is bool ? (bool) value : false;
var boolean = value as bool? ?? false;
return boolean ? Visibility.Visible : Visibility.Collapsed;
}
// No need to implement this
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var visibility = value is Visibility ? (Visibility) value : Visibility.Visible;
var visibility = value as Visibility? ?? Visibility.Visible;
switch (visibility)
{
case Visibility.Visible: return true;
case Visibility.Collapsed: return false;
default:
throw new ArgumentOutOfRangeException();
throw new ArgumentOutOfRangeException(nameof(value));
}
}
}

View File

@@ -40,12 +40,9 @@ namespace ModernKeePass.Converters
case PwIcon.Screen: return Symbol.GoToStart;
case PwIcon.EnergyCareful: return Symbol.FourBars;
case PwIcon.Disk: return Symbol.Save;
//case PwIcon.PaperQ: return Symbol.;
//case PwIcon.TerminalEncrypted: return Symbol.;
case PwIcon.Console: return Symbol.SlideShow;
case PwIcon.Printer: return Symbol.Scan;
case PwIcon.ProgramIcons: return Symbol.GoToStart;
//case PwIcon.Run: return Symbol.;
case PwIcon.Settings:
case PwIcon.Tool: return Symbol.Repair;
case PwIcon.Archive: return Symbol.Crop;
@@ -53,15 +50,12 @@ namespace ModernKeePass.Converters
case PwIcon.Clock: return Symbol.Clock;
case PwIcon.EMailSearch: return Symbol.Find;
case PwIcon.PaperFlag: return Symbol.Flag;
//case PwIcon.Memory: return Symbol.;
case PwIcon.TrashBin: return Symbol.Delete;
case PwIcon.Expired: return Symbol.Cancel;
case PwIcon.Info: return Symbol.Help;
//case PwIcon.Package: return Symbol.;
case PwIcon.Folder:
case PwIcon.FolderOpen:
case PwIcon.FolderPackage: return Symbol.Folder;
//case PwIcon.LockOpen: return Symbol.;
case PwIcon.PaperLocked: return Symbol.ProtectedDocument;
case PwIcon.Checked: return Symbol.Accept;
case PwIcon.Pen: return Symbol.Edit;
@@ -71,10 +65,6 @@ namespace ModernKeePass.Converters
case PwIcon.UserKey: return Symbol.ContactPresence;
case PwIcon.Home: return Symbol.Home;
case PwIcon.Star: return Symbol.OutlineStar;
//case PwIcon.Tux: return Symbol.;
//case PwIcon.Feather: return Symbol.;
//case PwIcon.Apple: return Symbol.;
//case PwIcon.Wiki: return Symbol.;
case PwIcon.Money: return Symbol.Shop;
case PwIcon.Certificate: return Symbol.PreviewLink;
case PwIcon.BlackBerry: return Symbol.CellPhone;
@@ -87,392 +77,8 @@ namespace ModernKeePass.Converters
var symbol = (Symbol) value;
switch (symbol)
{
/*case Symbol.Previous:
break;
case Symbol.Next:
break;
case Symbol.Play:
break;
case Symbol.Pause:
break;
case Symbol.Edit:
break;
case Symbol.Save:
break;
case Symbol.Clear:
break;*/
case Symbol.Delete:
return PwIcon.TrashBin;
/*case Symbol.Remove:
break;
case Symbol.Add:
break;
case Symbol.Cancel:
break;
case Symbol.Accept:
break;
case Symbol.More:
break;
case Symbol.Redo:
break;
case Symbol.Undo:
break;
case Symbol.Home:
break;
case Symbol.Up:
break;
case Symbol.Forward:
break;
case Symbol.Back:
break;
case Symbol.Favorite:
break;
case Symbol.Camera:
break;
case Symbol.Setting:
break;
case Symbol.Video:
break;
case Symbol.Sync:
break;
case Symbol.Download:
break;
case Symbol.Mail:
break;
case Symbol.Find:
break;
case Symbol.Help:
break;
case Symbol.Upload:
break;
case Symbol.Emoji:
break;
case Symbol.TwoPage:
break;
case Symbol.LeaveChat:
break;
case Symbol.MailForward:
break;
case Symbol.Clock:
break;
case Symbol.Send:
break;
case Symbol.Crop:
break;
case Symbol.RotateCamera:
break;
case Symbol.People:
break;
case Symbol.OpenPane:
break;
case Symbol.ClosePane:
break;
case Symbol.World:
break;
case Symbol.Flag:
break;
case Symbol.PreviewLink:
break;
case Symbol.Globe:
break;
case Symbol.Trim:
break;
case Symbol.AttachCamera:
break;
case Symbol.ZoomIn:
break;
case Symbol.Bookmarks:
break;
case Symbol.Document:
break;
case Symbol.ProtectedDocument:
break;
case Symbol.Page:
break;
case Symbol.Bullets:
break;
case Symbol.Comment:
break;
case Symbol.MailFilled:
break;
case Symbol.ContactInfo:
break;
case Symbol.HangUp:
break;
case Symbol.ViewAll:
break;
case Symbol.MapPin:
break;
case Symbol.Phone:
break;
case Symbol.VideoChat:
break;
case Symbol.Switch:
break;
case Symbol.Contact:
break;
case Symbol.Rename:
break;
case Symbol.Pin:
break;
case Symbol.MusicInfo:
break;
case Symbol.Go:
break;
case Symbol.Keyboard:
break;
case Symbol.DockLeft:
break;
case Symbol.DockRight:
break;
case Symbol.DockBottom:
break;
case Symbol.Remote:
break;
case Symbol.Refresh:
break;
case Symbol.Rotate:
break;
case Symbol.Shuffle:
break;
case Symbol.List:
break;
case Symbol.Shop:
break;
case Symbol.SelectAll:
break;
case Symbol.Orientation:
break;
case Symbol.Import:
break;
case Symbol.ImportAll:
break;
case Symbol.BrowsePhotos:
break;
case Symbol.WebCam:
break;
case Symbol.Pictures:
break;
case Symbol.SaveLocal:
break;
case Symbol.Caption:
break;
case Symbol.Stop:
break;
case Symbol.ShowResults:
break;
case Symbol.Volume:
break;
case Symbol.Repair:
break;
case Symbol.Message:
break;
case Symbol.Page2:
break;
case Symbol.CalendarDay:
break;
case Symbol.CalendarWeek:
break;
case Symbol.Calendar:
break;
case Symbol.Character:
break;
case Symbol.MailReplyAll:
break;
case Symbol.Read:
break;
case Symbol.Link:
break;
case Symbol.Account:
break;
case Symbol.ShowBcc:
break;
case Symbol.HideBcc:
break;
case Symbol.Cut:
break;
case Symbol.Attach:
break;
case Symbol.Paste:
break;
case Symbol.Filter:
break;
case Symbol.Copy:
break;
case Symbol.Emoji2:
break;
case Symbol.Important:
break;
case Symbol.MailReply:
break;
case Symbol.SlideShow:
break;
case Symbol.Sort:
break;
case Symbol.Manage:
break;
case Symbol.AllApps:
break;
case Symbol.DisconnectDrive:
break;
case Symbol.MapDrive:
break;
case Symbol.NewWindow:
break;
case Symbol.OpenWith:
break;
case Symbol.ContactPresence:
break;
case Symbol.Priority:
break;
case Symbol.GoToToday:
break;
case Symbol.Font:
break;
case Symbol.FontColor:
break;
case Symbol.Contact2:
break;
case Symbol.Folder:
break;
case Symbol.Audio:
break;
case Symbol.Placeholder:
break;
case Symbol.View:
break;
case Symbol.SetLockScreen:
break;
case Symbol.SetTile:
break;
case Symbol.ClosedCaption:
break;
case Symbol.StopSlideShow:
break;
case Symbol.Permissions:
break;
case Symbol.Highlight:
break;
case Symbol.DisableUpdates:
break;
case Symbol.UnFavorite:
break;
case Symbol.UnPin:
break;
case Symbol.OpenLocal:
break;
case Symbol.Mute:
break;
case Symbol.Italic:
break;
case Symbol.Underline:
break;
case Symbol.Bold:
break;
case Symbol.MoveToFolder:
break;
case Symbol.LikeDislike:
break;
case Symbol.Dislike:
break;
case Symbol.Like:
break;
case Symbol.AlignRight:
break;
case Symbol.AlignCenter:
break;
case Symbol.AlignLeft:
break;
case Symbol.Zoom:
break;
case Symbol.ZoomOut:
break;
case Symbol.OpenFile:
break;
case Symbol.OtherUser:
break;
case Symbol.Admin:
break;
case Symbol.Street:
break;
case Symbol.Map:
break;
case Symbol.ClearSelection:
break;
case Symbol.FontDecrease:
break;
case Symbol.FontIncrease:
break;
case Symbol.FontSize:
break;
case Symbol.CellPhone:
break;
case Symbol.ReShare:
break;
case Symbol.Tag:
break;
case Symbol.RepeatOne:
break;
case Symbol.RepeatAll:
break;
case Symbol.OutlineStar:
break;
case Symbol.SolidStar:
break;
case Symbol.Calculator:
break;
case Symbol.Directions:
break;
case Symbol.Target:
break;
case Symbol.Library:
break;
case Symbol.PhoneBook:
break;
case Symbol.Memo:
break;
case Symbol.Microphone:
break;
case Symbol.PostUpdate:
break;
case Symbol.BackToWindow:
break;
case Symbol.FullScreen:
break;
case Symbol.NewFolder:
break;
case Symbol.CalendarReply:
break;
case Symbol.UnSyncFolder:
break;
case Symbol.ReportHacked:
break;
case Symbol.SyncFolder:
break;
case Symbol.BlockContact:
break;
case Symbol.SwitchApps:
break;
case Symbol.AddFriend:
break;
case Symbol.TouchPointer:
break;
case Symbol.GoToStart:
break;
case Symbol.ZeroBars:
break;
case Symbol.OneBar:
break;
case Symbol.TwoBars:
break;
case Symbol.ThreeBars:
break;
case Symbol.FourBars:
break;
case Symbol.Scan:
break;
case Symbol.Preview:
break;*/
default:
return PwIcon.Folder;
}

View File

@@ -8,20 +8,20 @@ namespace ModernKeePass.Converters
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boolean = value is bool ? (bool)value : false;
var boolean = value as bool? ?? false;
return boolean ? Visibility.Collapsed : Visibility.Visible;
}
// No need to implement this
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var visibility = value is Visibility ? (Visibility)value : Visibility.Visible;
var visibility = value as Visibility? ?? Visibility.Visible;
switch (visibility)
{
case Visibility.Visible: return false;
case Visibility.Collapsed: return true;
default:
throw new ArgumentOutOfRangeException();
throw new ArgumentOutOfRangeException(nameof(value));
}
}
}

View File

@@ -11,7 +11,6 @@ namespace ModernKeePass.Interfaces
{
string Name { get; }
bool RecycleBinEnabled { get; set; }
//int Status { get; set; }
GroupVm RootGroup { get; set; }
GroupVm RecycleBin { get; set; }
StorageFile DatabaseFile { get; set; }

View File

@@ -22,7 +22,6 @@ namespace ModernKeePass.Services
private StorageFile _realDatabaseFile;
private StorageFile _databaseFile;
private GroupVm _recycleBin;
private CompositeKey _compositeKey;
public GroupVm RootGroup { get; set; }
@@ -57,11 +56,7 @@ namespace ModernKeePass.Services
}
}
public CompositeKey CompositeKey
{
get { return _compositeKey; }
set { _compositeKey = value; }
}
public CompositeKey CompositeKey { get; set; }
public PwUuid DataCipher
{
@@ -112,7 +107,7 @@ namespace ModernKeePass.Services
throw new ArgumentNullException(nameof(key));
}
_compositeKey = key;
CompositeKey = key;
var ioConnection = IOConnectionInfo.FromFile(DatabaseFile);
if (createNew)
{
@@ -153,7 +148,7 @@ namespace ModernKeePass.Services
public async Task ReOpen()
{
await Open(_compositeKey);
await Open(CompositeKey);
}
/// <summary>

View File

@@ -21,7 +21,6 @@ namespace ModernKeePass.Services
public IReadOnlyDictionary<string, ProductListing> Products { get; }
//private LicenseInformation _licenseInformation;
private readonly HashSet<Guid> _consumedTransactionIds = new HashSet<Guid>();
public LicenseService()
@@ -51,7 +50,7 @@ namespace ModernKeePass.Services
case ProductPurchaseStatus.AlreadyPurchased:
return (int) PurchaseResult.AlreadyPurchased;
default:
throw new ArgumentOutOfRangeException();
throw new ArgumentOutOfRangeException(nameof(purchaseResults.Status));
}
}

View File

@@ -4,6 +4,8 @@ namespace ModernKeePass.Services
{
public abstract class SingletonServiceBase<T> where T : new()
{
protected SingletonServiceBase() { }
private static readonly Lazy<T> LazyInstance =
new Lazy<T>(() => new T());

View File

@@ -1,5 +1,4 @@
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using ModernKeePass.Common;
@@ -28,22 +27,8 @@ namespace ModernKeePass.Views
{
InitializeComponent();
NavigationHelper = new NavigationHelper(this);
NavigationHelper.LoadState += navigationHelper_LoadState;
}
/// <summary>
/// Remplit la page à l'aide du contenu passé lors de la navigation. Tout état enregistré est également
/// fourni lorsqu'une page est recréée à partir d'une session antérieure.
/// </summary>
/// <param name="sender">
/// Source de l'événement ; en général <see cref="Common.NavigationHelper"/>
/// </param>
/// <param name="e">Données d'événement qui fournissent le paramètre de navigation transmis à
/// <see cref="Frame.Navigate(Type, object)"/> lors de la requête initiale de cette page et
/// un dictionnaire d'état conservé par cette page durant une session
/// antérieure. L'état n'aura pas la valeur Null lors de la première visite de la page.</param>
private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) {}
#region Inscription de NavigationHelper
/// Les méthodes fournies dans cette section sont utilisées simplement pour permettre

View File

@@ -31,22 +31,8 @@ namespace ModernKeePass.Views
{
InitializeComponent();
NavigationHelper = new NavigationHelper(this);
NavigationHelper.LoadState += navigationHelper_LoadState;
}
/// <summary>
/// Populates the page with content passed during navigation. Any saved state is also
/// provided when recreating a page from a prior session.
/// </summary>
/// <param name="sender">
/// The source of the event; typically <see cref="Common.NavigationHelper"/>
/// </param>
/// <param name="e">Event data that provides both the navigation parameter passed to
/// <see cref="Frame.Navigate(Type, object)"/> when this page was initially requested and
/// a dictionary of state preserved by this page during an earlier
/// session. The state will be null the first time a page is visited.</param>
private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) {}
#region NavigationHelper registration
/// The methods provided in this section are simply used to allow
@@ -62,10 +48,15 @@ namespace ModernKeePass.Views
{
NavigationHelper.OnNavigatedTo(e);
if (e.Parameter is PasswordEventArgs)
DataContext = ((PasswordEventArgs) e.Parameter).RootGroup;
else if (e.Parameter is GroupVm)
DataContext = (GroupVm) e.Parameter;
var args = e.Parameter as PasswordEventArgs;
if (args != null)
DataContext = args.RootGroup;
else
{
var vm = e.Parameter as GroupVm;
if (vm != null)
DataContext = vm;
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
@@ -134,7 +125,7 @@ namespace ModernKeePass.Views
private void SemanticZoom_ViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e)
{
// We need to synchronize the two lists (zoomed-in and zoomed-out) because the source is different
if (e.IsSourceZoomedInView == false)
if (!e.IsSourceZoomedInView)
{
e.DestinationItem.Item = e.SourceItem.Item;
}