【问题标题】:WPF DataGrid Some checkboxes being reset on scrollWPF DataGrid 一些复选框在滚动时被重置
【发布时间】:2017-05-26 21:49:07
【问题描述】:

我有一个带有数据网格的 C# WPF 应用程序。我有一个自定义类,其中包含一些公共布尔属性,每个属性都有一个 get 和 set。

 public class OutlookPST
{
    public FileInfo PSTFileInfo { get; set; }   

    public Boolean Attached { get; set; }
    public Boolean FileLocal { get; set; }
    public Boolean LatestVersion { get; set; }
    public Boolean BackupExists { get; set; }
    public Boolean IgnoreDuplicate { get; set; }

    public Boolean CopyToLocalFlag { get; set; }
    public Boolean BackupToNetworkFlag { get; set; }  

在 xaml 文件中,我有 itemsource="Binding"。

<DataGrid x:Name="dgPSTs" VirtualizingStackPanel.VirtualizationMode="Standard" VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding}"  HorizontalAlignment="Left" Margin="10,121,0,0" VerticalAlignment="Top" Height="243" Width="1193"/>

我正在将 datagrid ItemsSource 属性设置为此自定义类的列表。

private void OutlookPSTToDatagrid(List<OutlookPST> PSTs)
    {
        try
        {   
            dgPSTs.ItemsSource = PSTs;

当我这样做时,所有初始数据看起来都不错。所有布尔标志都是复选框,这就是我想要的。所有数据都是正确的。当我向下滚动时,只有两个布尔标志被设置为选中。当我向上滚动时,还会检查第一行,而之前没有。

我不明白它是如何对某些标志起作用的,而不是对其他标志起作用的。

有人有什么想法吗?如果需要,我可以发布一些代码。让我知道代码的哪些部分。

谢谢!

【问题讨论】:

  • 您是否尝试过调试以查看将布尔标志设置为错误值的原因?
  • 没有看到你的代码的人应该如何帮助你?
  • 你好函子!您可以编辑问题并添加代码吗?一旦我们看到您的实施,我们将能够为您提供更好的答案!

标签: c# wpf checkbox datagrid


【解决方案1】:

原来罪魁祸首是代码中其他地方的一对格式不正确的 lambda 表达式:

if (outlookPSTs.Where(x => x.CopyToLocalFlag = true).Count() > 0)

代替:

if (outlookPSTs.Where(x => x.CopyToLocalFlag == true).Count() > 0)

另一个布尔标志也是如此。

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2011-07-05
    • 2016-06-25
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2016-01-13
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多