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)); } }); }
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)); }