Учитывая, что ваше объяснение не очень понятно, в чем проблема, чтобы поместить этот код в функцию следующим образом:
public void yourFunction(object sender, theTypeOfArguments e )
{
if (e.Row.DetailsVisibility == Visibility.Visible)
{
Dispatcher.BeginInvoke(() =>
{
DataGrid datagrid = sender as DataGrid;
if (datagrid != null)
{
datagrid.Tag = e.DetailsElement.ActualHeight;
datagrid.Height = datagrid.ActualHeight + e.DetailsElement.ActualHeight;
}
}
);
}
else
{
DataGrid datagrid = sender as DataGrid;
if(datagrid.Tag!=null)
datagrid.Height = datagrid.ActualHeight - System.Convert.ToDouble(datagrid.Tag);
}
}
Если это не ваш вопрос, пожалуйста, дайте больше разъяснений.