【问题标题】:Data in rows changing on scrolling the DataGrid (Silverlight)滚动 DataGrid (Silverlight) 时行中的数据发生变化
【发布时间】:2011-12-15 14:25:08
【问题描述】:

我在 dataGrid 中添加了不同的行,例如30行。当滚动出现在silverlight 网格上时。不同行中的数据发生变化。

我更改了事件。没有事件正在更改行中的数据。但在显示屏上,数据发生了变化。

为什么这个dataGrid会发生这种情况? 有没有什么特定的事件正在这样做???

【问题讨论】:

  • 提示:虚拟化。默认情况下,虚拟化附加属性处于启用状态。
  • 我已经通过从数据网格中删除高度并删除滚动条并将数据网格放入滚动查看器来修复它。但我仍然很想知道这有什么问题。

标签: silverlight silverlight-4.0 datagrid


【解决方案1】:

我已通过将自动高度赋予 DataGrid 并移除滚动条并将DataGrid 放入ScrollViewer 来修复它。

但是

我还是很想知道这有什么问题。

【讨论】:

  • THANK YOU THANK YOU 经过数小时与 infragistics xamgrid(与 silverlight datagrid 类似)的斗争,它似乎在滚动时将值随机复制到不同的行中,我终于幸运地找到了您的解决方案,谢谢!
【解决方案2】:

我目前在我的 DataGrid 中遇到了与 ComboBoxes 类似的问题。经过一番研究,我想我找到了原因。当一行变得可见时(即,您向下滚动并且现在可以看到以前隐藏的行),Row_Loading 事件将触发并重新初始化该行内的 ComboBoxes(显然是由于上述 Dipak 所提到的行虚拟化)。

此链接适用于 Silverlight 3,但我在使用 Silverlight 4 时遇到了同样的问题,所以我假设 SL4 也有同样的问题:

http://forums.silverlight.net/t/125209.aspx/1

另一个与您所做的类似解决方案的链接,基本上是手动关闭行虚拟化并关闭垂直滚动并将 RowPresenter 放置在 ScrollViewer 中。

http://forums.silverlight.net/p/101075/230671.aspx

【讨论】:

    【解决方案3】:

    实际上,当你加载一个网格时,并不是所有的行都是第一次创建的再回来,你会看到一个重新创建的行,没有复选框选择。 希望能解释...

    【讨论】:

      【解决方案4】:

      很久以前,但 Infragistiscs XamDataGrid 也有同样的问题。

      将相同的属性绑定到导致此错误的两个字段。

                              <ig:Field Column="1" Name="ArtNrID" Label="{l:Translate PriceList_ArtNr}" Width="80">
                                  <ig:Field.Settings>
                                      <ig:FieldSettings AllowEdit="True" LabelHeight="23"/>
                                  </ig:Field.Settings>
                              </ig:Field>
                      <ig:Field Column="2" Name="ArtBez" Label="{l:Translate PriceList_ArtBez}" Width="80">
                          <ig:Field.Settings>
                              <ig:FieldSettings AllowEdit="False" LabelHeight="23"/>
                          </ig:Field.Settings>
                      </ig:Field> 
                      <!--<ig:UnboundField Column="2" Name="ArtNrBez" Label="{l:Translate PriceList_ArtBez}" Width="Auto">
                                  <ig:Field.Settings>
                                      <ig:FieldSettings AllowEdit="False" LabelHeight="23">
                                          <ig:FieldSettings.EditorStyle>
                                              <Style TargetType="{x:Type igEditors:XamComboEditor}" >
                                                  <Style.Setters>
                                                      <Setter Property="DisplayMemberPath" Value="ArtBez"/>
                                                      <Setter Property="ValuePath" Value="ArtNrID"/>
                                                      <Setter Property="ItemsSource" Value="{Binding Value.ArticleList, Source={StaticResource proxy}}"/>
                                                      <Setter Property="DropDownButtonDisplayMode" Value="OnlyInEditMode"/>
                                                      <Setter Property="IsInEditMode" Value="False"/>
                                                      <Setter Property="Value" Value="{Binding DataItem.ArtNrID}"/>
                                                  </Style.Setters>
                                              </Style>
      
                                          </ig:FieldSettings.EditorStyle>
                                      </ig:FieldSettings>
                                  </ig:Field.Settings>
                              </ig:UnboundField>-->
      

      【讨论】:

        【解决方案5】:

        我遇到了类似的问题,并且能够通过在我的数据网格 xaml 中将虚拟化设置为 false 来纠正它。

        VirtualizingPanel.IsVirtualizing="False" 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-20
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 2021-03-29
          • 2014-10-27
          相关资源
          最近更新 更多