繁体   English   中英

WPF:DataGrid显示错误

[英]WPF: DataGrid Display Error

我有一个包含3列的DataGrid,其中2列是DataGridTextColumns,最后一个是包含CheckBox的DataGridTemplateColumn。 它绑定到一个ObservableCollection的Field对象。

用户可以根据ComboBox的SelectedItem更改DataGrid中的数据,ComboBox位于DataGrid的正上方。 此ComboBox绑定到RecordType对象的List。 我选择了一个List,因为它中的值不会改变。

我遇到的问题很奇怪。 有时,但并非总是(错误是非常不稳定的),当更改ComboBox中的值时,DataGrid中的行显示奇怪(请参见屏幕截图),同时向下滚动列表。 DataGrid中的某些行在其左侧显示一个小灰色区域,并且该行的内容被推向右侧,这使得难以读取单元格的值。 当您继续向上或向下滚动时,其他单元格以相同的方式显示,但问题似乎只影响最小行数,最大值为5。 受影响的行并不总是相同,并且可以随着ComboBox项目的更改而更改。

为了确认,我在屏幕截图中删除了某些字段名称以保护我们客户的隐私。

任何人都可以建议可能导致此显示问题的原因吗? 下面给出了我用于ComboBox和DataGrid的XAML代码。

任何建议/意见/帮助将不胜感激。

非常感谢!

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

尝试将datagrid的RowHeaderWidth参数设置为0 ,如:

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

(它似乎与此处提出的问题相同: WPF DataGrid行标题可见性错误 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM