Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Wpf 滚动时复选框列闪烁_Wpf_Vb.net_Checkbox_Datagrid - Fatal编程技术网

Wpf 滚动时复选框列闪烁

Wpf 滚动时复选框列闪烁,wpf,vb.net,checkbox,datagrid,Wpf,Vb.net,Checkbox,Datagrid,我想制作一个简单的表格,带有复选框列。 我将表创建为DataGrid,并将其绑定到自定义对象的列表中 一切正常,只是当我滚动桌子时,我注意到奇怪的闪烁效果。 看起来是这样的: 有什么问题吗?我怎样才能摆脱这个 我的xaml代码: <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com

我想制作一个简单的表格,带有复选框列。 我将表创建为
DataGrid
,并将其绑定到自定义对象的
列表中

一切正常,只是当我滚动桌子时,我注意到奇怪的闪烁效果。
看起来是这样的:

有什么问题吗?我怎样才能摆脱这个

我的xaml代码:

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="723.251">

<Grid>
    <DataGrid x:Name="MainDataGrid" Margin="22,21,133,58" 
              AutoGenerateColumns="False"
              SelectionMode="Single"
              SelectionUnit="Cell"
              CanUserSortColumns="False"
              IsReadOnly="True"
              >
    </DataGrid>
    <Button Content="Populate" HorizontalAlignment="Left" Margin="592,21,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click" IsDefault="True"/>
    <Label x:Name="Lbl1" Content="Label" HorizontalAlignment="Left" Margin="592,48,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
我使用的清单项目:

<System.Serializable()> Public Class Tags
    Implements INotifyPropertyChanged
    Public Property TagItem As String
    ' New Property
    Private _NewDataProperty As String
    Public Property TagCheck
        Set(value)
            _NewDataProperty = value
            _PropertyChanged("TagCheck")
        End Set
        Get
            Return _NewDataProperty
        End Get
    End Property
    ' Change events
    Private Sub _PropertyChanged(Optional ByVal PropertyName As String = Nothing)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(PropertyName))
    End Sub
    Private Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

    Public Sub SerializeMe()
    End Sub
End Class
公共类标记
实现INotifyPropertyChanged
公共属性标记项为字符串
“新财产
Private _NewDataProperty作为字符串
公共财产标记检查
设置(值)
_NewDataProperty=value
_属性更改(“标记检查”)
端集
得到
Return\u NewDataProperty
结束
端属性
“改变事件
私有子属性更改(可选ByVal PropertyName As String=Nothing)
RaiseEvent PropertyChanged(Me,新PropertyChangedEventArgs(PropertyName))
端接头
私有事件PropertyChanged(发送者作为对象,e作为PropertyChangedEventArgs)实现INotifyPropertyChanged.PropertyChanged
公共子系统名称()
端接头
末级

问题是,单元格在滚动到单元格时被渲染。首先显示复选框,然后显示选择值。 如中所述,您可以尝试设置

ScrollViewer.CanContentScroll=False

这将立即绘制整个列表(并禁用内容的虚拟化),但如果列表包含大量条目,这可能会对您的性能造成真正的问题。

感谢您的解释和解决方案。这对我目前的案子很有效。作为将来的参考,如果有许多条目,我们将如何处理这个问题?我不确定是否诚实。一种方法是自定义表示布尔值的列,将其显示为切换按钮(例如显示“活动”/“非活动”),它们实际上可能不会闪烁。但我不熟悉用这种方式定制数据网格……对不起。
ScrollViewer.CanContentScroll=False