コード例 #1
0
        private void OnDataConversionError(DataGridDataErrorEventArgs dataError)
        {
            EventHandler <DataGridDataErrorEventArgs> handler = this.DataConversionError;

            if (handler != null)
            {
                handler(this, dataError);
            }
        }
コード例 #2
0
ファイル: DataGridBoundColumnBase.cs プロジェクト: ynkbt/moon
        private void DataGridValueConverter_DataConversionError(object sender, DataGridDataErrorEventArgs dataError)
        {
            Debug.Assert(dataError != null);
            Debug.Assert(sender is DataGridValueConverter);

            if (this.OwningGrid != null)
            {
                this.OwningGrid.OnDataConversionError(dataError);
            }
        }
コード例 #3
0
ファイル: DataGridValueConverter.cs プロジェクト: dfr0/moon
 private void OnDataConversionError(DataGridDataErrorEventArgs dataError) 
 {
     EventHandler<DataGridDataErrorEventArgs> handler = this.DataConversionError;
     if (handler != null) 
     {
         handler(this, dataError);
     } 
 } 
コード例 #4
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        private DataGridDataErrorEventArgs CommitRowEdit(bool exitEditingMode)
        {
            if (this._editingRow == null) 
            {
                return null;
            } 
            Debug.Assert(this.EditingRowIndex >= -1); 
            Debug.Assert(this.EditingRowIndex < this._rowCount);
 
            DataGridDataErrorEventArgs dataError = null;
            DataGridRowCancelEventArgs e = new DataGridRowCancelEventArgs(this._editingRow);
            OnCommittingRowEdit(e); 
            if (e.Cancel)
            {
                dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow); 
                dataError.Cancel = true; 
                return dataError;
            } 

            try
            { 
                if (!this.DataConnection.EndEdit(this._editingRow.DataContext))
                {
                    dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow); 
                    return dataError; 
                }
                if (!exitEditingMode && !this.DataConnection.BeginEdit(this._editingRow.DataContext)) 
                {
                    dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow);
                    return dataError; 
                }
            }
            catch (Exception ex) 
            { 
                dataError = new DataGridDataErrorEventArgs(ex, this.CurrentColumn, this._editingRow);
                OnDataError(dataError); 
                return dataError;
            }
 
            return null;
        }
コード例 #5
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        private DataGridDataErrorEventArgs CommitCellEditPrivate()
        {
            if (this._editingColumnIndex == -1) 
            {
                return null;
            } 
            Debug.Assert(this._editingColumnIndex >= 0); 
            Debug.Assert(this._editingColumnIndex < this.ColumnsItemsInternal.Count);
            Debug.Assert(this._editingRow != null); 

            DataGridDataErrorEventArgs dataError = null;
            DataGridColumnBase dataGridColumn = this.ColumnsItemsInternal[this._editingColumnIndex]; 
            FrameworkElement element = this._editingRow.Cells[this._editingColumnIndex].Content as FrameworkElement;
            DataGridCellCancelEventArgs e = new DataGridCellCancelEventArgs(dataGridColumn, this._editingRow, element);
            OnCommittingCellEdit(e); 
            if (e.Cancel) 
            {
                dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow); 
                dataError.Cancel = true;
                return dataError;
            } 

            // Write the new cell value into the backend for non-bound cells.
            DataGridBoundColumnBase dataGridBoundColumn = dataGridColumn as DataGridBoundColumnBase; 
            try 
            {
                if (dataGridBoundColumn == null) 
                {
                    //
 
                    OnCommitCellEdit(new DataGridCellEventArgs(dataGridColumn, this._editingRow, element));
                }
            } 
            catch (Exception ex) 
            {
                dataError = new DataGridDataErrorEventArgs(ex, this.CurrentColumn, this._editingRow); 
                OnDataError(dataError);
                return dataError;
            } 
            return null;
        }
コード例 #6
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        private DataGridDataErrorEventArgs CancelRowEdit(bool exitEditingMode)
        {
            if (this._editingRow == null) 
            {
                return null;
            } 
            Debug.Assert(this.EditingRowIndex >= -1); 
            Debug.Assert(this.EditingRowIndex < this._rowCount);
 
            DataGridDataErrorEventArgs dataError = null;
            try
            { 
                object dataItem = this._editingRow.DataContext;
                if (!this.DataConnection.CancelEdit(dataItem))
                { 
                    dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow); 
                    return dataError;
                } 
                //

                foreach (DataGridColumnBase dataGridColumn in this.Columns) 
                {
                    if (!exitEditingMode && dataGridColumn.Index == this._editingColumnIndex && dataGridColumn is DataGridBoundColumnBase)
                    { 
                        continue; 
                    }
                    PopulateCellContent(true /*forceTemplating*/, !exitEditingMode && dataGridColumn.Index == this._editingColumnIndex /*isCellEdited*/, dataGridColumn, this._editingRow, this._editingRow.Cells[dataGridColumn.Index]); 
                }
                if (!exitEditingMode && !this.DataConnection.BeginEdit(dataItem))
                { 
                    dataError = new DataGridDataErrorEventArgs(null, this.CurrentColumn, this._editingRow);
                    return dataError;
                } 
            } 
            catch (Exception ex)
            { 
                dataError = new DataGridDataErrorEventArgs(ex, this.CurrentColumn, this._editingRow);
                OnDataError(dataError);
                return dataError; 
            }

            return null; 
        } 
コード例 #7
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        private DataGridDataErrorEventArgs CancelCellEdit(bool exitEditingMode)
        {
            if (this._editingColumnIndex == -1) 
            { 
                return null;
            } 

            Debug.Assert(this._editingColumnIndex >= 0);
            Debug.Assert(this._editingColumnIndex < this.ColumnsItemsInternal.Count); 
            Debug.Assert(this._editingRow != null);

            DataGridDataErrorEventArgs dataError = null; 
            DataGridColumnBase dataGridColumn = this.ColumnsItemsInternal[this._editingColumnIndex]; 
            DataGridCell dataGridCell = this._editingRow.Cells[this._editingColumnIndex];
            // Write the old cell value back into the cell content. 
            DataGridBoundColumnBase dataGridBoundColumn = dataGridColumn as DataGridBoundColumnBase;
            try
            { 
                if (dataGridBoundColumn != null)
                {
                    dataGridBoundColumn.CancelCellEdit(this._uneditedValue); 
                } 
                else
                { 
                    DataGridTemplateColumn dataGridTemplateColumn = dataGridColumn as DataGridTemplateColumn;
                    if (dataGridTemplateColumn != null)
                    { 
                        PopulateCellContent(true /*forceTemplating*/, !exitEditingMode /*isCellEdited*/, dataGridTemplateColumn, this._editingRow, dataGridCell);
                    }
                } 
            } 
            catch (Exception ex)
            { 
                dataError = new DataGridDataErrorEventArgs(ex, this.CurrentColumn, this._editingRow);
                OnDataError(dataError);
                return dataError; 
            }

            return null; 
        } 
コード例 #8
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        private bool BeginRowEdit(DataGridRow dataGridRow) 
        { 
            //
            Debug.Assert(this._editingRow == null); 
            Debug.Assert(dataGridRow != null);

            Debug.Assert(this.CurrentRowIndex >= -1); 
            Debug.Assert(this.CurrentRowIndex < this._rowCount);

            // 
 

 


 


 
 
            try
            { 
                if (this.DataConnection.BeginEdit(dataGridRow.DataContext))
                {
                    this._editingRow = dataGridRow; 
                    if (this.AreRowHeadersVisible)
                    {
                        this._editingRow.HeaderCell.ApplyRowStatus(true /*animate*/); 
                    } 
                    this._editingRow.ApplyBackgroundBrush(true /*animate*/);
                    // 
                    return true;
                }
                // 
                return false;
            }
            catch (Exception ex) 
            { 
                DataGridDataErrorEventArgs dataError = new DataGridDataErrorEventArgs(ex, this.CurrentColumn, this._editingRow);
                OnDataError(dataError); 
                if (dataError.ThrowException)
                {
                    throw dataError.Exception; 
                }
            }
            // 
            return false; 
        }
コード例 #9
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
        // 
 
        /// <summary>
        /// A cell value parsing or formatting failed 
        /// </summary>
        internal void OnDataConversionError(DataGridDataErrorEventArgs dataError)
        { 
            Debug.Assert(dataError != null);
            Debug.Assert(dataError.Exception != null);
            Debug.Assert(dataError.Column != null); 
 
            if (dataError.Column.OwningGrid == this &&
                (dataError.Row == null || dataError.Row.OwningGrid == this)) 
            {
                OnDataError(dataError);
                if (dataError.ThrowException) 
                {
                    throw dataError.Exception;
                } 
            } 
        }
コード例 #10
0
ファイル: DataGrid.xaml.cs プロジェクト: dfr0/moon
 /// <summary>
 /// Raises the DataError event.
 /// </summary> 
 protected virtual void OnDataError(DataGridDataErrorEventArgs e)
 {
     EventHandler<DataGridDataErrorEventArgs> handler = this.DataError; 
     if (handler != null) 
     {
         handler(this, e); 
     }
 }
コード例 #11
0
ファイル: DataGridBoundColumnBase.cs プロジェクト: dfr0/moon
        private void DataGridValueConverter_DataConversionError(object sender, DataGridDataErrorEventArgs dataError) 
        {
            Debug.Assert(dataError != null);
            Debug.Assert(sender is DataGridValueConverter); 

            if (this.OwningGrid != null)
            { 
                this.OwningGrid.OnDataConversionError(dataError); 
            }
        }