2014-01-19 2 views
3

У меня есть DataGrid с 3 столбцами, 2 из которых - DataGridTextColumns, а последний - DataGridTemplateColumn, который содержит CheckBox. Он привязан к объекту ObservableCollection Field.WPF: Ошибка отображения DataGrid

Пользователь может изменить данные в DataGrid на основе SelectedItem ComboBox, который появляется чуть выше DataGrid. Этот ComboBox привязан к списку объектов RecordType. Я выбрал List, поскольку значения в нем не меняются.

Проблема у меня странная. Иногда, но не всегда (ошибка очень темпераментная), при изменении значения в ComboBox строки на экране DataGrid странно (см. Скриншот) при прокрутке вниз по списку. Некоторые строки в DataGrid отображаются с небольшой серой областью в левой части, а содержимое строки сдвигается вправо, что затрудняет чтение значений ячеек. По мере продолжения прокрутки вверх или вниз, так что другие ячейки отображаются одинаково, хотя проблема только влияет на минимальное количество строк, 5 на макс. Связанные строки не всегда одинаковы и могут меняться при изменении элемента ComboBox.

Чтобы подтвердить, что я скрыл определенные имена полей на скриншоте, чтобы защитить конфиденциальность нашего клиента.

Может ли кто-нибудь предложить, что может вызвать эту проблему? Код XAML, который я использую для ComboBox и DataGrid, приведен ниже.

Любые предложения/комментарии/помощь будут очень признательны.

Большое спасибо!

<ComboBox ItemsSource="{Binding RecordTypes}" SelectedItem="{Binding SelectedRecordType}" DisplayMemberPath="DisplayName" HorizontalAlignment="Left" Margin="9,71,0,0" VerticalAlignment="Top" Width="195"/> 
<DataGrid SelectedItem="{Binding SelectedField}" ItemsSource="{Binding Fields}" GridLinesVisibility="None" AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="10,98,0,0" VerticalAlignment="Top" Height="385" Width="400" IsReadOnly="True" CanUserReorderColumns="False" CanUserResizeRows="False" HeadersVisibility="Column" SelectionMode="Single" MaxColumnWidth="300"> 
    <DataGrid.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="BorderThickness" Value="0" /> 
      <Setter Property="ToolTip" Value="{Binding Description}" /> 
      <Style.Triggers> 
       <Trigger Property="ToolTip" Value="{x:Static system:String.Empty}"> 
        <Setter Property="ToolTipService.IsEnabled" Value="False" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.CellStyle> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding DisplayName}" Header="Field" Width="150" /> 
     <DataGridTextColumn Binding="{Binding DisplayPath}" Header="Path" Width="*" /> 
     <DataGridTemplateColumn MinWidth="25" MaxWidth="25"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="5" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

+0

Я думаю, что это связано с вашей подсказкой. что объясняет также, почему это не происходит все время. – thumbmunkeys

+0

Похоже, вы страдаете от [Видимости заголовка строки заголовка WPF DataGrid] (http://stackoverflow.com/questions/8683631/wpf-datagrid-row-header-visibility-error) – elgonzo

+0

Спасибо elgonzo, я думаю, что это решило проблема! Однако левый столбец теперь полностью серый, я предполагаю, потому что я, очевидно, удалил HeadersVisibility = «Column». Если я использую как RowHeaderWidth = 0, так и HeadersVisibility = "Column", проблема все же возникает. Любая идея, как я могу удалить левый столбец, сохраняя RowHeaderWidth = 0? Большое спасибо за вашу помощь! – user3124134

ответ

0

Попробуйте установить параметр RowHeaderWidth для вашего DataGrid к 0, как:

<DataGrid 
    RowHeaderWidth="0" 
    ... your other parameters for the datagrid ... 
> 

(Это, кажется, та же проблема, как просили здесь:. WPF DataGrid Row Header Visibility Error)

Смежные вопросы