public CanvasViewModel() { Commands = new DynamicRelayCommandDictionary() { ParameterDicConverter = ParameterDicConverters.FromParameterDic( new ParameterDic() { { "CanvasVM", this } }) }; Commands.UnselectAll = new SimpleScriptCommand("UnselectAll", pd => { pd.GetValue <CanvasViewModel>("{CanvasVM}").UnselectAll(); return(ResultCommand.NoError); }); for (int i = 1; i < 20; i++) { Items.Add(new ItemViewModel("Test" + i)); } Items[0].IsSelected = true; }
public FileListViewModel(string label) { Items = new ObservableCollection <FileViewModel>(); #region Initialize DynamicCommandDictionary Commands = new DynamicRelayCommandDictionary() { ParameterDicConverter = ParameterDicConverters.FromParameterDic( new ParameterDic() { { "FileListVM", this } }) }; Commands.UnselectAll = _unselectCommand; #endregion #region Initialize DragHelper and DropHelper DragHelper = new LambdaShellDragHelper <FileModel>( _fileModelConverter, //Convert IDraggable (FileViewModel) to M (FileModel), ConvertBack is used. _dataObjectConverter, //Convert IEnumerable<M> (IEnumerable<FileModel>) to IDataObject, Convert is used. () => Items.Where(fvm => fvm.IsSelected).Select(fvm => fvm.Model), (fmList) => DragDropEffectsEx.Link | DragDropEffectsEx.Copy | DragDropEffectsEx.Move, //QueryDrag (fmList, da, effect) => //OnDragCompleted { if (effect == DragDropEffectsEx.Move) { foreach (var f in fmList) { var foundItem = Items.FirstOrDefault(fvm => fvm.Model.Equals(f)); if (foundItem != null) { Items.Remove(foundItem); } } } }); DropHelper = new LambdaShellDropHelper <FileModel>( _fileModelConverter, //Convert IDraggable (FileViewModel) to M (FileModel), Convert is used. _dataObjectConverter, //Convert IEnumerable<M> (IEnumerable<FileModel>) to IDataObject, ConvertBack is used. (fms, eff) => //QueryDrop(IEnumerable<FileModel>, DragDropEffectsEx) : QueryDropEffects { IEnumerable <FileModel> itemsModel = Items.Select(fvm => fvm.Model); if (fms.Any(f => itemsModel.Contains(f))) { return(QueryDropEffects.None); } return(QueryDropEffects.CreateNew(eff & (DragDropEffectsEx.Link | DragDropEffectsEx.Move), eff & DragDropEffectsEx.Move)); }, (fms, da, eff) => //Drop(IEnumerable<FileModel>, IDataObject, DragDropEffectsEx) : DragDropEffectsEx { foreach (var existingFvm in Items) { existingFvm.IsSelected = false; } foreach (var fm in fms) { Items.Add(new FileViewModel(fm)); } if (eff.HasFlag(DragDropEffectsEx.Move)) { return(DragDropEffectsEx.Move); } if (eff.HasFlag(DragDropEffectsEx.Copy)) { return(DragDropEffectsEx.Copy); } return(DragDropEffectsEx.Link); }) { DisplayName = label }; #endregion }