private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (_vm == null) { _vm = DataContext as PmConfigViewModel; } if (_vm == null || PmGridControl.Columns.Any(p => Equals(p.Tag, ColUnboundMethodsFieldName))) { return; } try { PmGridControl.BeginDataUpdate(); foreach (var op in _vm.GetOperation()) { var opcode = op.GetProperty <string>(BillOperation.OperationCodePropertyName); var header = op.GetProperty <string>(BillOperation.OperationNamePropertyName); var column = new GridColumn { Header = header, FieldName = opcode, Width = 200, AllowUnboundExpressionEditor = false, UnboundType = UnboundColumnType.Object, AllowSorting = DefaultBoolean.True, SortMode = ColumnSortMode.DisplayText, //AllowAutoFilter = false, //AllowColumnFiltering = DefaultBoolean.False, //AutoFilterCondition = new AutoFilterCondition(), FilterPopupMode = FilterPopupMode.CheckedList, ColumnFilterMode = ColumnFilterMode.DisplayText, Tag = ColUnboundMethodsFieldName }; PmGridControl.Columns.Add(column); } _vm.NewRowAdded -= OnNewRowAdded; _vm.NewRowAdded += OnNewRowAdded; _vm.BeforeSave -= OnBeforeSave; _vm.BeforeSave += OnBeforeSave; _vm.BeforeRefresh -= OnBeforeRefresh; _vm.BeforeRefresh += OnBeforeRefresh; } finally { PmGridControl.EndDataUpdate(); } }
protected override void OnClose() { DataContextChanged -= OnDataContextChanged; PmGridControl.Loaded -= OnGridLoaded; PmGridControl.RestoredLayoutFromXml -= OnGridRestoredLayoutFromXml; PmGridControl.SelectionChanged -= OnGridSelectionChanged; PmGridControl.ItemsSourceChanged -= OnGridItemsSourceChanged; base.OnClose(); if (_vm != null) { _vm.Dispose(); _vm = null; } }