File: ObservableListSource%60.cs

package info (click to toggle)
mono-reference-assemblies 3.12.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 604,240 kB
  • ctags: 625,505
  • sloc: cs: 3,967,741; xml: 2,793,081; ansic: 418,042; java: 60,435; sh: 14,833; makefile: 11,576; sql: 7,956; perl: 1,467; cpp: 1,446; yacc: 1,203; python: 598; asm: 422; sed: 16; php: 1
file content (81 lines) | stat: -rw-r--r-- 3,367 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.

namespace System.Data.Entity
{
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis;

    /// <summary>
    ///     Extends <see cref="ObservableCollection{T}" /> and adds an explicit implementation of <see cref="IListSource" />.
    ///     The GetList method of IListSource is implemented to return an <see cref="IBindingList" /> implementation that
    ///     stays in sync with the ObservableCollection.
    ///     This class can be used to implement navigation properties on entities for use in Windows Forms data binding.
    ///     For WPF data binding using an ObservableCollection rather than an instance of this class is recommended.
    /// </summary>
    /// <typeparam name="T"> </typeparam>
    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix",
        Justification = "Adding Collection makes the name too long.")]
    public class ObservableListSource<T> : ObservableCollection<T>, IListSource
        where T : class
    {
        #region Fields and constructors

        private IBindingList _bindingList;

        /// <summary>
        ///     Initializes a new instance of the <see cref="ObservableListSource{T}" /> class.
        /// </summary>
        public ObservableListSource()
        {
        }

        /// <summary>
        ///     Initializes a new instance of the <see cref="ObservableListSource{T}" /> class that
        ///     contains elements copied from the specified collection.
        /// </summary>
        /// <param name="collection"> The collection from which the elements are copied. </param>
        public ObservableListSource(IEnumerable<T> collection)
            : base(collection)
        {
        }

        /// <summary>
        ///     Initializes a new instance of the <see cref="ObservableListSource{T}" /> class that
        ///     contains elements copied from the specified list.
        /// </summary>
        /// <param name="list"> The list from which the elements are copied. </param>
        public ObservableListSource(List<T> list)
            : base(list)
        {
        }

        #endregion

        #region IListSource implementation

        /// <summary>
        ///     Returns <c>false</c>.
        /// </summary>
        /// <returns> <c>false</c> . </returns>
        bool IListSource.ContainsListCollection
        {
            get { return false; }
        }

        /// <summary>
        ///     Returns an <see cref="IBindingList" /> implementation that stays in sync with this <see cref="ObservableCollection{T}" />.
        ///     The returned list is cached on this object such that the same list is returned each time this method is called.
        /// </summary>
        /// <returns> An <see cref="IBindingList" /> implementation that stays in sync with this <see
        ///      cref="ObservableCollection{T}" /> . </returns>
        IList IListSource.GetList()
        {
            return _bindingList ?? (_bindingList = this.ToBindingList());
        }

        #endregion
    }
}