我有一段WPF DataGrid,我已經使用了一段時間,它的效果很好。不同於這裏的其他海報,我還沒有與滾動條或鼠標滾輪(還)的問題。我有CTRLEND編程到DataGrid的末尾,然後跟蹤最近添加的項目。我可以通過以上的鍵向上滾動瀏覽DataGrid
內容。WPF DataGrid滾動向下箭頭鍵奇怪行爲
但是,我真的很奇怪的行爲與下降關鍵!如果我從DataGrid
的頂部開始並按住下一個鍵,它會滾動一下,然後最終在兩個相鄰行之間來回跳動。如果我將它向下滾動更多,然後跳回到它將在其之間跳轉的前兩行的最上面,然後向下滾動到我要去的點。如果我再往下看,下降鍵將滾動到結尾。如果我進入DataGrid
的頂部並重新開始,我會一次又一次地得到完全相同的行爲。
我還沒有找到解決這個問題的帖子,我在DataGrid
文檔中沒有看到任何幫助。
這只是一個三列DataGrid
,其中每列顯示TextBlock
s。任何人都可以解釋爲什麼只有這種滾動模式有問題嗎?這裏的XAML:
<DataGrid ItemsSource="{Binding MainLog}" AutoGenerateColumns="False"
Name="log_datagrid" SelectedCellsChanged="log_datagrid_SelectedCellsChanged"
KeyUp="datagrid_KeyUp" LoadingRow="log_datagrid_LoadingRow">
<DataGrid.Columns>
<!-- timestamp -->
<DataGridTemplateColumn Header="Timestamp">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Timestamp}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- level -->
<DataGridTemplateColumn Header="Level">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Level}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- error message -->
<DataGridTemplateColumn Header="Message">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Message}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
順便說一句,即使我所有的代碼隱藏註釋掉的事件處理程序發生此行爲。
這裏是我的MainLog集合包含該結構的定義:
public struct MainLogData
{
public string Timestamp { get; set; }
public string Level { get; set; }
public string Message { get; set; }
}
我得到奇怪的行爲也當使用WPF和網格,甚至到了Visual Studio的崩潰導致它運行的內存點,大概增加了一些更多的RAM將會幫助你 – JohnnBlade
添加更多的內存是永遠的解決方案來解決內存異常。 ;)也許你的datagrid單元格正在使用需要'Dispose'd的對象。 – Dave
您的MainLog集合中的類是否具有Equals方法的自定義實現? –