2 Stimmen

Silverlight: Ich habe eine Datentabelle, die mich nur die erste Zeile auswählen lässt - ich habe keine Ahnung warum

Dies ist ein merkwürdiger Fehler in meinem Code und ich habe keine Ahnung, was ihn verursacht.

der Code zum Erstellen der Datentabelle scheint gut zu sein. Er ist von einer Datentabelle kopiert, die funktioniert. Die Ursache scheint ein Steuerelement zu sein, von dem dieses Steuerelement ein Kind ist.

EDIT: In meiner Frustration habe ich alle Steuerelemente zwischen dem Navigationsrahmen und meinem Steuerelement entfernt. Mein Steuerelement verwendet einen Datenkontext, der auf einer generischen Klasse basiert, und ich habe überprüft, dass es wie beabsichtigt durch Unit-Tests funktioniert - abgesehen von einer Lademethode, die die Eigenschaft List festlegt, ist es im Wesentlichen leer. Die Lademethode funktioniert und gibt eine bevölkerte beobachtbare Sammlung zurück.

Alles lädt und bindet. Die Interaktion funktioniert, um das Raster und mein Detailformular zu verbinden.

Allerdings sind nur die Zellen in der ersten Zeile auswählbar - die anderen Zeilen werden jedoch hervorgehoben, wenn Sie mit dem Mauszeiger über sie fahren. Sie reagieren nur nicht auf Klick-Ereignisse.

die große Frage ist: Ist jemand bewusst, alle Bedingungen (dh Verschachtelung von Steuerelementen), die dieses Verhalten verursachen können? Für isntance ich weiß, dass die Verwendung von Akkordeon-Steuerelemente und scrollViewers in Verbindung hat alle Arten von bösen Nebeneffekte.

EDIT: Ich habe versucht, das Steuerelement zu ersetzen, das mit diesem funktioniert (sie erben von demselben Basisobjekt, so dass sie kompatibel sind. Wenn ich dies tue, bekomme ich das gleiche gebrochene Verhalten. Dies bedeutet, dass es etwas falsch mit dem Viewmodel ... oder mehr likley die Bindung (aber Daten erscheinen :/) ...

den Code für die Datentabelle:

<sdk:DataGrid   
                    AutoGenerateColumns="False" 
                    x:Name="dgBankCodes" 
                    ItemsSource="{Binding List}" 
                    IsReadOnly="True" 
                    SelectionMode="Single" >

                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Binding="{Binding Code}" CanUserSort="True" Header="Bank Code" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding Name}" CanUserSort="True" Header="Name" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding SortCode}" CanUserSort="True" Header="Sort Code" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding AccountNumber}" CanUserSort="True" Header="Act No" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding Description}" CanUserSort="True" Header="Description" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding IBAN}" Header="IBAN" IsReadOnly="True"/>
                    <sdk:DataGridTextColumn Binding="{Binding BIC}" CanUserSort="True" Header="BIC" IsReadOnly="True"/>
                </sdk:DataGrid.Columns>
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectionChanged">
                        <i:InvokeCommandAction 
                            Command="{Binding SelectObjectCommand}" 
                            CommandParameter="{Binding SelectedItem, ElementName=dgBankCodes}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </sdk:DataGrid>

2voto

Aducci Punkte 24966

Dies geschieht, wenn Sie die Methode "Equals" für Ihre Objektklasse überschreiben. Stellen Sie sicher, dass jedes Objekt in Ihrer überschriebenen Equals-Methode eindeutig ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X