private CmdExeReserve mc; //予約系コマンド集 public ReserveView() { InitializeComponent(); try { //リストビュー関連の設定 var list_columns = Resources["ReserveItemViewColumns"] as GridViewColumnList; list_columns.AddRange(Resources["RecSettingViewColumns"] as GridViewColumnList); lstCtrl = new ListViewController <ReserveItem>(this); lstCtrl.SetSavePath(CommonUtil.GetMemberName(() => Settings.Instance.ReserveListColumn) , CommonUtil.GetMemberName(() => Settings.Instance.ResColumnHead) , CommonUtil.GetMemberName(() => Settings.Instance.ResSortDirection)); lstCtrl.SetViewSetting(listView_reserve, gridView_reserve, true, true, list_columns); lstCtrl.SetSelectedItemDoubleClick(EpgCmds.ShowDialog); //ステータス変更の設定 lstCtrl.SetSelectionChangedEventHandler((sender, e) => this.UpdateStatus(1)); //最初にコマンド集の初期化 mc = new CmdExeReserve(this); mc.SetFuncGetDataList(isAll => (isAll == true ? lstCtrl.dataList : lstCtrl.GetSelectedItemsList()).GetReserveList()); mc.SetFuncSelectSingleData((noChange) => { var item = lstCtrl.SelectSingleItem(noChange); return(item == null ? null : item.ReserveInfo); }); mc.SetFuncReleaseSelectedData(() => listView_reserve.UnselectAll()); //コマンド集に無いもの mc.AddReplaceCommand(EpgCmds.ChgOnOffCheck, (sender, e) => lstCtrl.ChgOnOffFromCheckbox(e.Parameter, EpgCmds.ChgOnOff)); //コマンド集からコマンドを登録。多少冗長だが、持っているコマンドは全部登録してしまう。 //フォーカスによってコンテキストメニューからウィンドウにコマンドが繋がらない場合があるので、 //コンテキストメニューにもコマンドを登録する。 mc.ResetCommandBindings(this, listView_reserve.ContextMenu); //ボタンの設定。XML側でコマンド指定しておけば、ループでまとめ処理できるけど、 //インテリセンス効かないし(一応エラーチェックは入る)、コード側に一覧として書き出す。 mBinds.View = CtxmCode.ReserveView; mBinds.SetCommandToButton(button_on_off, EpgCmds.ChgOnOff); mBinds.SetCommandToButton(button_change, EpgCmds.ShowDialog); mBinds.SetCommandToButton(button_del, EpgCmds.Delete); mBinds.SetCommandToButton(button_add_manual, EpgCmds.ShowAddDialog); mBinds.SetCommandToButton(button_timeShiftPlay, EpgCmds.Play); //メニューの作成、ショートカットの登録 //RefreshMenu(); //コンテキストメニューを開く時の設定 listView_reserve.ContextMenu.Opened += new RoutedEventHandler(mc.SupportContextMenuLoading); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } }
private ContextMenu cmdMenu = new ContextMenu(); //tunerReserveView.Contextmenu使うとフォーカスおかしくなる‥。 public TunerReserveMainView() { InitializeComponent(); tunerReserveView.ScrollChanged += new ScrollChangedEventHandler(tunerReserveView_ScrollChanged); tunerReserveView.LeftDoubleClick += new TunerReserveView.PanelViewClickHandler(tunerReserveView_LeftDoubleClick); tunerReserveView.RightClick += new TunerReserveView.PanelViewClickHandler(tunerReserveView_RightClick); //ビューコードの登録 mBinds.View = CtxmCode.TunerReserveView; //最初にコマンド集の初期化 mc = new CmdExeReserve(this); mc.SetFuncGetDataList(isAll => isAll == true ? reserveList.GetDataList() : reserveList.GetHitDataList(clickPos)); //コマンド集からコマンドを登録 mc.ResetCommandBindings(this, cmdMenu); //メニューの作成、ショートカットの登録 //RefreshMenu(); }
private ContextMenu cmdMenu = new ContextMenu(); //tunerReserveView.Contextmenu使うとフォーカスおかしくなる‥。 public TunerReserveMainView() { InitializeComponent(); tunerReserveView.ScrollChanged += new ScrollChangedEventHandler(tunerReserveView_ScrollChanged); tunerReserveView.LeftDoubleClick += (sender, cursorPos) => EpgCmds.ShowDialog.Execute(null, cmdMenu); tunerReserveView.MouseClick += (sender, cursorPos) => clickPos = cursorPos; tunerReserveView.RightClick += new TunerReserveView.PanelViewClickHandler(tunerReserveView_RightClick); button_now.Click += (sender, e) => tunerReserveView.scrollViewer.ScrollToVerticalOffset(0); //ビューコードの登録 mBinds.View = CtxmCode.TunerReserveView; //最初にコマンド集の初期化 mc = new CmdExeReserve(this); mc.SetFuncGetDataList(isAll => isAll == true ? reserveList.GetDataList() : reserveList.GetHitDataList(clickPos)); //コマンド集からコマンドを登録 mc.ResetCommandBindings(this, cmdMenu); //予約をたどるショートカットの登録。こちらはコマンドで問題無いが、番組表側と揃えておく。 this.PreviewKeyDown += (sender, e) => ViewUtil.OnKeyMoveNextReserve(sender, e, this); }