Ejemplo n.º 1
0
 public RootViewModel()
 {
     Items    = new ObservableCollection <ItemViewModel>();
     Commands = new DynamicRelayCommandDictionary()
     {
         ParameterDicConverter = new ParameterDicConverterBase(((pm, pms) => new ParameterDic()
         {
             { "RootVM", this },
         }), ((pm, pms) => null), ParameterDicConverters.ConvertParameterOnly),
         ScriptRunner = new ScriptRunner()
     };
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Create and initialize (get&setupScriptCommands()) a ScriptCommandDictionary and return.
        /// </summary>
        /// <returns></returns>
        private dynamic setupCommandDictionary(IParameterDicConverter parameterDicConverter)
        {
            DynamicRelayCommandDictionary dic = new DynamicRelayCommandDictionary()
            {
                ParameterDicConverter = parameterDicConverter
            };

            foreach (var cmd in getScriptCommands())
            {
                dic[cmd] = NullScriptCommand.Instance;
            }
            setupScriptCommands(dic);
            return(dic);
        }
Ejemplo n.º 3
0
        public ItemViewModel(RootViewModel root, int value)
        {
            Value       = value;
            _isSelected = false;

            Commands = new DynamicRelayCommandDictionary()
            {
                ParameterDicConverter = new ParameterDicConverterBase(((pm, pms) => new ParameterDic()
                {
                    { "RootVM", root },
                    { "ItemVM", this },
                    { "Parameter", pm }
                }), ((pm, pms) => null)),
                ScriptRunner = new ScriptRunner()
            };

            Commands.AddOne      = TestRelayCommands.ModifyValueCommand("{ItemVM}", 1);
            Commands.SubtractOne = TestRelayCommands.ModifyValueCommand("{ItemVM}", -1);
            Commands.MouseEnter  = ScriptCommands.PrintDebug("MouseEnter -> {ItemVM.Value}");
        }
Ejemplo n.º 4
0
        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
        }