DataGrid
とVirtualizationMode="Recycling"
があり、ViewModelでObservableCollection
にバインドされています。それはうまく動作します - スクロールとページの上/下が速いです。仮想化:ネストされたItemsControlから生成されたコンテナをリサイクルする方法はありますか?
ここでItemsControl
のついたDataGridTemplateColumn
をDataTemplate
に追加します。それは約15項目に束縛されています(すべての行について同じ数)。スクロールはずっと遅いです。しかし、基になるCollectionがNullの場合は、すべてが再び高速です。私は、各行に生成されたItemContainerがリサイクルされないと仮定します。
プロセス全体のスピードを上げる方法や、行内のすべてのネストされたコントロールをリサイクルする方法はありますか?
PS:DataGridColumnではItemsControlを使用しますが、Collectionの各ItemにはDataGridColumnを使用しません。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding AObservableCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding AStringProperty}" Width="40" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
ItemsControlのバインディングを表示してください – Paparazzi
ハックしますが、MyObservableCollection内のアイテムを文字列に連結するテキストプロパティが公開されています。 – Paparazzi
テキストボックスの代わりに別の編集、タブナビゲーション、コンテキストメニュー、代替詳細ビューなどが必要なので、できません。 – LPL