Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:数据网格显示错误_C#_Wpf_Xaml_Datagrid_Combobox - Fatal编程技术网

C# WPF:数据网格显示错误

C# WPF:数据网格显示错误,c#,wpf,xaml,datagrid,combobox,C#,Wpf,Xaml,Datagrid,Combobox,我有一个DataGrid,有3列,其中2列是DataGridTextColumns,最后一列是DataGridTemplateColumn,其中包含一个复选框。它绑定到字段对象的可观察集合 用户可以根据组合框的SelectedItem更改DataGrid中的数据,该组合框显示在DataGrid的正上方。此组合框绑定到RecordType对象列表。我选择了一个列表,因为其中的值不变 我遇到的问题很奇怪。有时,但并非总是(错误是非常喜怒无常的),在更改组合框中的值时,当您向下滚动列表时,DataGr

我有一个DataGrid,有3列,其中2列是DataGridTextColumns,最后一列是DataGridTemplateColumn,其中包含一个复选框。它绑定到字段对象的可观察集合

用户可以根据组合框的SelectedItem更改DataGrid中的数据,该组合框显示在DataGrid的正上方。此组合框绑定到RecordType对象列表。我选择了一个列表,因为其中的值不变

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

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

有人能告诉我是什么导致了这个显示问题吗?下面给出了我用于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 ...
>


(这似乎与此处所问的问题相同:)

我认为这与您的工具提示有关。这也解释了为什么它不会一直发生。看起来你在感谢elgonzo,我想这已经解决了问题!然而,我认为左侧的列现在是完全灰色的,因为我显然已经删除了HeadersVisibility=“column”。如果同时使用RowHeaderWidth=0和HeadersVisibility=“Column”,则问题仍然存在。知道如何在保持RowHeaderWidth=0的情况下删除左侧列吗?顺便说一下,非常感谢你的帮助@elgonzo,你能把你的评论添加到一个答案中,这样这个问题就可以解决了吗?如果您能添加一些额外的文本,使答案看起来不像是注释,我们也将不胜感激。@user3124134,无法从示例代码中推断为什么在设置RowHeaderWidth=“0”时会看到一个完整的灰色列。您确定它在DataGrid控件内部,而不是导致该效果的其他UIElement吗?如果它确实在DataGrid内部,则需要调试该问题。特别关注与样式、模板和DataGrid或其任何子/子元素修改背后的代码相关的任何内容。