Beispiel #1
0
        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);
        }
Beispiel #2
0
            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();
            }
Beispiel #3
0
        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);
        }