2014-05-10 7 views
6

Ich bekomme diese Ausnahme beim Binden der ItemsSource einer ListBox an eine ObservableCollection<object>.Eine erste Chance Ausnahme des Typs 'System.InvalidCastException' aufgetreten in WindowsBase.dll

Die Kollektion wird mit einer Mischung bevölkert von {DependencyPropertyChangedEventArgs, EventEntry}

guckte ich DependencyPropertyChangedEventArgs und gefunden:

public struct DependencyPropertyChangedEventArgs 
{ 
    ... 
    public override bool Equals(object obj) 
    { 
     return this.Equals((DependencyPropertyChangedEventArgs)obj); <- huge cast right here? 
    } 
} 

-Code für EventEntry:

public class EventEntry 
{ 
    public EventEntry(string name) 
    { 
     Name = name; 
    } 
    public string Name { get; private set; } 
} 

Als ich das gelesen spähte Code ist es entworfen, um zu explodieren.

Ist das richtig?

+1

Derive von DependencyPropertyChangedEventArgs und überschreiben Equals? Oder verwenden Sie es überhaupt nicht und verwenden Sie stattdessen Ihre eigene Klasse? – Clemens

+0

@Clemens ja, Zeit für einen Workaround! –

Antwort

0

Bestätigte Fehler, Repro:

[Test] 
public void Repro() 
{ 
    var args = new DependencyPropertyChangedEventArgs(UIElement.IsEnabledProperty, false, true); 
    Assert.Throws<InvalidCastException>(() => args.Equals(1)); 
} 

Confirmed bug in the implementation: (below code is from reference source)

public override bool Equals(object obj) 
{ 
    return Equals((DependencyPropertyChangedEventArgs)obj); 
} 

Filed a bug on Connect

+0

Es ist nicht als Antwort gedacht, mehr Infos. Sollte es wiki machen, wenn ich wüsste wie. –

Verwandte Themen