Silverlight: у меня есть сетка данных, которая позволит мне выбрать только первый ряд - я понятия не имею, почему - PullRequest
2 голосов
/ 23 марта 2011

Это странная ошибка в моем коде, и я понятия не имею, что ее вызывает.

код для построения сетки данных кажется хорошим. Он скопирован из решетки данных, которая работает. Кажется, причина в том, что этот элемент является потомком.

РЕДАКТИРОВАТЬ: В моем разочаровании я удалил все элементы управления между структурой навигации и моим элементом управления. Мой элемент управления использует контекст данных, основанный на универсальном классе, и я проверил, что он работает, как и предполагалось, с помощью модульных тестов - помимо метода загрузки, который устанавливает свойство List, он по существу пуст. Метод load работает и возвращает заполненную наблюдаемую коллекцию.

Все загружается и связывается. Взаимодействие работает, чтобы соединить сетку и мою форму детализации.

Однако единственными ячейками, которые можно выбрать, являются ячейки в первом ряду, однако другие строки выделяются при наведении на них курсора. Они просто не реагируют на события клика.

главный вопрос: знает ли кто-нибудь о каких-либо условиях (например, вложенности элементов управления), которые могут вызвать такое поведение? Я знаю, что использование аккордеонных элементов управления и scrollViewers в сочетании имеет всевозможные неприятные побочные эффекты.

РЕДАКТИРОВАТЬ: я попытался заменить элемент управления, который работает с этим (они наследуют от одного базового объекта, поэтому они совместимы. Когда я делаю это, я получаю то же нарушенное поведение. Это означает, что что-то не так с моделью представления. .. или более похоже на привязку (но данные появляются: /) ...

код для таблицы данных:

<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 Ответ

2 голосов
/ 23 марта 2011

Это происходит, когда вы перезаписываете метод Equals для вашего класса объектов. Убедитесь, что каждый объект уникален в вашем переопределенном методе Equals

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...