Example #1
0
        private void AddInputBindgsTo(UIElement iTrg, List <ICommand> cmdList, MenuCmds.GestureTrg spc)
        {
            if (iTrg == null)
            {
                return;
            }

            cmdList = cmdList.FindAll(icmd => iTrg.InputBindings.OfType <InputBinding>().All(bind => bind.Command != icmd));
            cmdList.ForEach(icmd =>
            {
                MenuCmds.CmdData cmdData;
                if (mm.MC.WorkCmdOptions.TryGetValue(icmd, out cmdData) == false ||
                    ((cmdData.GesTrg & spc) == spc || cmdData.GesTrg == MenuCmds.GestureTrg.None) && mm.IsGestureDisableOnView(icmd, this.View) == false)
                {
                    iTrg.InputBindings.AddRange(GetInputBinding(icmd));
                }
            });
        }
Example #2
0
        private void ResetInputBindgsTo(UIElement iTrg, List <ICommand> cmdList, MenuCmds.GestureTrg spc)
        {
            if (iTrg == null)
            {
                return;
            }

            cmdList.ForEach(icmd =>
            {
                var delList = iTrg.InputBindings.OfType <InputBinding>().Where(bind => bind.Command == icmd).ToList();
                delList.ForEach(item => iTrg.InputBindings.Remove(item));

                MenuCmds.CmdData cmdData;
                if (mm.MC.WorkCmdOptions.TryGetValue(icmd, out cmdData))
                {
                    if ((cmdData.GesTrg & spc) == spc || cmdData.GesTrg == MenuCmds.GestureTrg.None)
                    {
                        iTrg.InputBindings.AddRange(GetInputBinding(icmd));
                    }
                }
                else
                {
                    iTrg.InputBindings.AddRange(GetInputBinding(icmd));
                }
            });

            //残っている無効なジェスチャを削除。誤って追加されたりしたものがあれば、それも削除される。
            var delBinds = new List <InputBinding>();

            foreach (var item in iTrg.InputBindings.OfType <InputBinding>())
            {
                if (mm.IsGestureDisableOnView(item.Command, View) == true)
                {
                    delBinds.Add(item);
                }
            }
            delBinds.ForEach(item => iTrg.InputBindings.Remove(item));
        }