DataGridセルにフォーカスを当てて矢印↓を押したときにデータグリッドのリストの行が先頭から順番に移動する処理を作成しています。
FocusManager.SetFocusedElementの"この部分"の引数を何を入れたらいいのかわからずに困っています。
ご教授願います。
DataGridRow rowContainer = DataGrid.ItemContainerGenerator.ContainerFromIndex( 0 ) as DataGridRow;
DataGridCellsPresenter presenter = FindVisualChild<DataGridCellsPresenter>( rowContainer );
if( presenter == null )
{
rowContainer.ApplyTemplate();
presenter = FindVisualChild<DataGridCellsPresenter>( rowContainer );
}
if( presenter != null )
{
DataGridCell cell = presenter.ItemContainerGenerator.ContainerFromIndex( 0 ) as DataGridCell;
cell.Focus();
FocusManager.SetFocusedElement( "この部分", cell );
}
private T FindVisualChild<T>( DependencyObject obj ) where T : DependencyObject
{
for( int i = 0; i < VisualTreeHelper.GetChildrenCount( obj ); i++ )
{
DependencyObject child = VisualTreeHelper.GetChild( obj, i );
if( child != null && child is T )
return (T)child;
else
{
T childOfChild = FindVisualChild<T>( child );
if( childOfChild != null )
return childOfChild;
}
}
return null;
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。