在滚动DataGrid(Silverlight)时更改行中的数据

时间:2011-12-15 14:25:09

标签: silverlight silverlight-4.0 datagrid

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

我已经改变了这个事件。没有事件正在更改行中的数据。但在显示屏上数据已更改。

为什么这个dataGrid会发生这种情况? 这样做有什么具体的事件???

5 个答案:

答案 0 :(得分:5)

我已经通过为DataGrid提供自动高度并删除滚动条并将DataGrid放入ScrollViewer来修复它。

但是

我仍然非常想知道这有什么问题。

答案 1 :(得分:0)

我目前在DataGrid中遇到与ComboBox类似的问题。经过一番研究后,我想我发现了原因。当一行变得可见时(即,向下滚动并且之前隐藏的行现在处于视图中),Row_Loading事件将触发并重新初始化该行内的ComboBox(显然是由于上面提到的Dipak的Row Virtualization)。

Silverlight 3的这个链接,但是我在使用Silverlight 4时遇到了同样的问题,所以我假设SL4有同样的问题:

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

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

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

答案 2 :(得分:0)

当你加载一个网格时,并不是所有行都是第一次创建的,一旦滚动就会创建和删除行,所以当你标记声音时,假设第一行有一个复选框并滚动到底行然后当你滚动再回来你看到没有复选框选择的重新创建的行。 希望解释......

答案 3 :(得分:0)

很久以前,但与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>-->

答案 4 :(得分:0)

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

VirtualizingPanel.IsVirtualizing="False"