Silverlight:我有一个数据网格,只让我选择第一行 - 我不知道为什么

时间:2011-03-23 15:16:43

标签: silverlight datagrid

这是我的代码中的一个奇怪的错误,我不知道是什么导致它。

构建数据网格的代码似乎很好。它是从执行功能的数据网格中复制的。原因似乎是这种控制是孩子的控制。

编辑:在我的沮丧中,我删除了导航框架和我的控件之间的任何控件。我的控件使用基于泛型类的数据上下文,并且我已经验证它通过单元测试按预期工作 - 除了设置List属性的加载方法它基本上是空的。 load方法起作用并返回一个填充的可观察集合。

一切都加载和绑定。该交互用于连接网格和我的详细信息表单。

但是,可选择的唯一单元格是第一行中的单元格 - 但是当您将鼠标悬停在其上时,其他行会突出显示。他们只是不回应点击事件。

最大的问题是:是否有人知道可能导致此行为的任何条件(即控件嵌套)? 对于isntance,我知道使用手风琴控件和scrollViewers会产生各种令人讨厌的副作用。

编辑:我尝试替换使用此控件的控件(它们继承了相同的基础对象,因此它们是兼容的。当我这样做时,我得到相同的破坏行为。这意味着viewmodel有问题。 ..或更多喜欢绑定(但数据出现:/)......

datagrid的代码:

<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>

1 个答案:

答案 0 :(得分:2)

当您为对象类覆盖Equals方法时会发生这种情况。确保每个对象在重写的Equals方法

中是唯一的