public void SetViewSetting(ListView lv, GridView gv, bool defaultContextMenu, bool isSortOnReload , List <GridViewColumn> cols_source = null, RoutedEventHandler headerclick = null) { listView = lv; gridView = gv; IsSortViewOnReload = isSortOnReload; //スタイルのオプションを読込む RefreshStyle(); //グリッド列の差し込み。クリアせずに追加する。 if (cols_source != null) { cols_source.ForEach(col => gridView.Columns.Add(col)); } var hclick = headerclick != null ? headerclick : (sender, e) => this.GridViewHeaderClickSort(e); foreach (GridViewColumn info in gridView.Columns) { var header = info.Header as GridViewColumnHeader; header.Click += new RoutedEventHandler(hclick); if (header.ToolTip == null) { header.ToolTip = "Ctrl+Click(マルチ・ソート)、Shift+Click(解除)"; } } if (defaultContextMenu == true) { if (lv.ContextMenu == null) { lv.ContextMenu = new ContextMenuEx(); } lv.ContextMenu.Opened += (sender, e) => { //コンテキストメニューを開いたとき、アイテムがあればそれを保存する。無ければNULLになる。 var lb = (sender as ContextMenu).PlacementTarget as ListBox; if (lb != null) { ClickTarget = lb.GetPlacementItem() as ListBoxItem; } }; lv.ContextMenu.Closed += (sender, e) => ClickTarget = null; } gvSelector = new GridViewSelector(gv, column_SavePath == null ? null as Func <List <ListColumnInfo> > : () => Settings.Instance.GetSettings(column_SavePath) as List <ListColumnInfo>, column_SavePath == null ? null as Func <List <ListColumnInfo> > : () => Settings.GetDefaultColumn(Owner.GetType())); gvSorter = new GridViewSorter(); gvInitialSort(); //Escapeキー及びアイテムの無い場所のクリックで、選択を解除する。 bx.targetBoxAllowCancelAction(listView); }
public gvCache(List <object> itemList) { list = itemList; typeKey = list[0].GetType(); Func <object, ulong> getKey = GridViewSorter.GetKeyFunc(typeKey); getValueKey = GridViewSorter.GetValuePropertyFunc(list[0]); idCache = list.Select(item => { try { return(getKey(item)); } catch { return(ulong.MinValue); } }).ToArray(); }
public bool ReloadInfoData(Func <List <T>, bool> reloadData) { try { RefreshStyle(); //更新前の選択情報の保存 var oldItems = new ListViewSelectedKeeper(listView, true, GridViewSorter.GetKeyFunc(typeof(T))); listView.ItemsSource = null; dataList.Clear(); if (CommonManager.Instance.IsConnected == false) { return(false); } if (reloadData(dataList) == false) { return(false); } if (IsSortViewOnReload == true) { this.gvSorter.SortByMultiHeader(dataList); } else { this.gvSorter.ResetSortParams(); } listView.ItemsSource = dataList; //選択情報の復元 oldItems.RestoreListViewSelected(); return(true); } catch (Exception ex) { CommonUtil.DispatcherMsgBoxShow(ex.ToString()); } return(false); }