CanAddNew und generische Listen mehrerer Parameter

Das WPF ListCollectionView unterstützt das Hinzufügen von Elementen bei generischen Listen in einem Parameter, wie List<T> oder ObservableCollection<T>.

Erstellt man jedoch ein View zu einer Collection der Bauart MyCollection<T,S>, unterstützt ListCollectionView lediglich ReadOnly Operationen, denn CanAddNew evaluiert zu “False”. Nach einigen Nachforschungen stellt man fest, dass CanCunstructItem zu “False” evaluiert und folglich auch CanAddNew.

Man folgendem dirty code lässt sich das Problem umgehen. In der Implementierung von ListCollectionView in .NET 4 tritt das Problem nicht auf.

public class TypedListCollectionView : ListCollectionView
    {
        public TypedListCollectionView(IList items, Type itemType)
            : base(items) {

            var itemConstructor = itemType.GetConstructor(Type.EmptyTypes);

            Type type = typeof(ListCollectionView);

            var itemConstructorField =
            type.GetField("_itemConstructor", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            var isItemConstructorValidField =
            type.GetField("_isItemConstructorValid", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            itemConstructorField.SetValue(this, itemConstructor);
            isItemConstructorValidField.SetValue(this, true);
        }
    }

Published Montag, 21. Juni 2010 14:42 von Jan-Cornelius Molnar

Kommentare

# rimonabantexcellence site title

Freitag, 21. Juni 2013 08:49 von rimonabantexcellence site title

Ping Antwort von  rimonabantexcellence site title

# propecia

Donnerstag, 27. Juni 2013 07:41 von propecia

Ping Antwort von  propecia