ValidationErrorCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / Controls / ValidationErrorCollection.cs / 1 / ValidationErrorCollection.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) 2003 by Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: 
//      ValidationErrorCollection contains the list of ValidationErrors from
//      the various Bindings and MultiBindings on an Element.  ValidationErrorCollection 
//      be set through the Validation.ErrorsProperty.
//
// See specs at http://avalon/connecteddata/Specs/Validation.mht
// 
// History:
//  5/3/2004       mharper: created. 
// 
//---------------------------------------------------------------------------
 

using System;
using System.ComponentModel;
using System.Collections.Generic; 
using System.Collections.ObjectModel;
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data;
 

namespace MS.Internal.Controls
{
    ///  
    ///      ValidationErrorCollection contains the list of ValidationErrors from
    ///      the various Bindings and MultiBindings on an Element.  ValidationErrorCollection 
    ///      be set through the Validation.ErrorsProperty. 
    /// 
    internal class ValidationErrorCollection : ObservableCollection 
    {

        /// 
        /// Empty collection that serves as a default value for 
        /// Validation.ErrorsProperty.
        ///  
        public static readonly ReadOnlyObservableCollection Empty = 
                new ReadOnlyObservableCollection(new ValidationErrorCollection());
 
        /// 
        /// called by base class Collection<T> when an item is added to list;
        /// 
        protected override void InsertItem(int index, ValidationError item) 
        {
            int existingIndex = FindErrorForBinding(item.BindingInError); 
 
            // if there is already a ValidationError for this binding,
            // then throw 
            if (existingIndex > -1)
            {
                throw new ArgumentException(SR.Get(SRID.DuplicatesNotAllowed), "validationError");
            } 

            base.InsertItem(index, item); 
        } 

 
        //-----------------------------------------------------
        //
        //  Internal Methods
        // 
        //-----------------------------------------------------
 
        #region Internal Methods 

        static internal ReadOnlyObservableCollection GetReadOnlyErrors(DependencyObject d) 
        {
            ValidationErrorCollection errors = Validation.GetErrorsInternal(d);

            if (errors != null) 
            {
                if (errors._readonlyWrapper == null) 
                { 
                    errors._readonlyWrapper = new ReadOnlyObservableCollection(errors);
                } 
                return errors._readonlyWrapper;
            }
            else
            { 
                return Empty;
            } 
        } 

        #endregion Internal Methods 

        //------------------------------------------------------
        //
        //  Private Methods 
        //
        //----------------------------------------------------- 
 
        #region Private Methods
 
        private int FindErrorForBinding(object binding)
        {
            for (int i = 0; i < this.Count; i++)
            { 
                if (this[i].BindingInError == binding)
                { 
                    return i; 
                }
            } 

            return -1;
        }
 
        #endregion Private Methods
 
        ReadOnlyObservableCollection _readonlyWrapper; 
    }
 
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) 2003 by Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: 
//      ValidationErrorCollection contains the list of ValidationErrors from
//      the various Bindings and MultiBindings on an Element.  ValidationErrorCollection 
//      be set through the Validation.ErrorsProperty.
//
// See specs at http://avalon/connecteddata/Specs/Validation.mht
// 
// History:
//  5/3/2004       mharper: created. 
// 
//---------------------------------------------------------------------------
 

using System;
using System.ComponentModel;
using System.Collections.Generic; 
using System.Collections.ObjectModel;
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data;
 

namespace MS.Internal.Controls
{
    ///  
    ///      ValidationErrorCollection contains the list of ValidationErrors from
    ///      the various Bindings and MultiBindings on an Element.  ValidationErrorCollection 
    ///      be set through the Validation.ErrorsProperty. 
    /// 
    internal class ValidationErrorCollection : ObservableCollection 
    {

        /// 
        /// Empty collection that serves as a default value for 
        /// Validation.ErrorsProperty.
        ///  
        public static readonly ReadOnlyObservableCollection Empty = 
                new ReadOnlyObservableCollection(new ValidationErrorCollection());
 
        /// 
        /// called by base class Collection<T> when an item is added to list;
        /// 
        protected override void InsertItem(int index, ValidationError item) 
        {
            int existingIndex = FindErrorForBinding(item.BindingInError); 
 
            // if there is already a ValidationError for this binding,
            // then throw 
            if (existingIndex > -1)
            {
                throw new ArgumentException(SR.Get(SRID.DuplicatesNotAllowed), "validationError");
            } 

            base.InsertItem(index, item); 
        } 

 
        //-----------------------------------------------------
        //
        //  Internal Methods
        // 
        //-----------------------------------------------------
 
        #region Internal Methods 

        static internal ReadOnlyObservableCollection GetReadOnlyErrors(DependencyObject d) 
        {
            ValidationErrorCollection errors = Validation.GetErrorsInternal(d);

            if (errors != null) 
            {
                if (errors._readonlyWrapper == null) 
                { 
                    errors._readonlyWrapper = new ReadOnlyObservableCollection(errors);
                } 
                return errors._readonlyWrapper;
            }
            else
            { 
                return Empty;
            } 
        } 

        #endregion Internal Methods 

        //------------------------------------------------------
        //
        //  Private Methods 
        //
        //----------------------------------------------------- 
 
        #region Private Methods
 
        private int FindErrorForBinding(object binding)
        {
            for (int i = 0; i < this.Count; i++)
            { 
                if (this[i].BindingInError == binding)
                { 
                    return i; 
                }
            } 

            return -1;
        }
 
        #endregion Private Methods
 
        ReadOnlyObservableCollection _readonlyWrapper; 
    }
 
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK