Ячейки Silverlight DataGrid исчезают - PullRequest
0 голосов
/ 23 октября 2009

У меня есть DataGrid в приложении Silverlight с данными в нем. В нашем приложении также есть кнопка, которая может изменить макет так, что DataGrid изменит ширину.

Проблема в том, что вы находитесь в «маленьком» режиме и прокручиваете столбцы, которые вы не видите, их элементы DataGridCell получают Visibility = Collapsed. Теперь это нормально, когда вы прокручиваете, но когда размер DataGrid увеличивается, чтобы показать все столбцы, они остаются свернутыми. Однако по какой-то причине вы всегда можете видеть все ячейки в первом ряду.

Это пахнет как ошибка в элементе управления DataGrid. Кто-нибудь знает способ обойти это? Я дошел до добавления обработчика для SizeChanged в DataGrid, но я не совсем уверен, что вызывать, чтобы заставить его отображать эти свернутые ячейки.

РЕДАКТИРОВАТЬ: после некоторого тестирования я обнаружил, что это происходит только с GridLinesVisibility = "Horizontal"

XAML (Нажатие переключает ширину DataGrid от половины до полной):

<StackPanel Orientation="Vertical">
    <data:DataGrid x:Name="testDataGrid" GridLinesVisibility="Horizontal" />
    <Button HorizontalAlignment="Center" Content="Switch Width" Name="switchWidthButton" Click="Button_Click" />
</StackPanel>

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

1 Ответ

0 голосов
/ 27 октября 2009

После некоторого обсуждения псевдонима MS я обнаружил, что на самом деле это ошибка в DataGrid. Я отправил им репроект, так что, надеюсь, он будет исправлен в будущем. Тем временем, в качестве обходного пути, вы можете скрыть и повторно отобразить один из столбцов, когда DataGrid изменяет размер:

<data:DataGrid x:Name="testDataGrid" GridLinesVisibility="Horizontal" Width="150" SizeChanged="testDataGrid_SizeChanged" />

-

private void testDataGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
    this.testDataGrid.Columns[0].Visibility = Visibility.Collapsed;
    this.testDataGrid.Columns[0].Visibility = Visibility.Visible;
}
...