/// <summary>
        /// Creates a new instance.
        /// If <paramref name="sources"/> implements also <see cref="INotifyCollectionChanged"/>, than it binds <see cref="System.Windows.Input.ICommand.CanExecuteChanged"/> to its changes.
        /// </summary>
        /// <param name="sources">A collection to move items in.</param>
        protected MoveCommand(IMoveCollection <T> sources)
        {
            Ensure.NotNull(sources, "sources");
            this.Collection = sources;

            if (sources is INotifyCollectionChanged notifyCollection)
            {
                notifyCollection.CollectionChanged += OnCollectionChanged;
            }
        }
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <param name="collection">A collection to move items in.</param>
 public MoveDownCommand(IMoveCollection <T> collection)
     : base(collection)
 {
 }