Wpf DataGridからDataGridRow取得でnullが返る件
初登板ホリノウチです。
WPFでDataGridからDataGridRowの取得にはContainerFromIndexやContainerFromItemがあります。 (環境: Windows7, .net framework4, C#, wpf)
DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
とか
DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
など
ただ、このメソッドたち頻繁にnullを返します。 そんな時はUpdateLayoutとScrollIntoViewです。
grid.UpdateLayout(); grid.ScrollIntoView(grid.Items[index]); DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
とか
grid.UpdateLayout(); grid.ScrollIntoView(grid.SelectedItem); DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
など
この二つを先に呼んでおくと、DataGridRowが返ってくるはず。 仮想ビューとか使っていると無理かもしれませんが。。。
最近、nullチェックをしない強気な方が増えています。 nullチェックをしましょう。