You can get the DataGrid
instance in markup extension provide value method but FindMe Control
you won't be able to get with VisualTree extension methods because when this method gets called, Visual Tree for dataGrid is not created at that time.
Morever, logical tree won't be of any help either since Control is Visual child and not logical child of dataGrid.
However, for your question to find dataGrid, you can get like this:
public override object ProvideValue(IServiceProvider serviceProvider)
{
IRootObjectProvider provider = (IRootObjectProvider)serviceProvider
.GetService(typeof(IRootObjectProvider));
DataGrid dataGrid =
LogicalTreeHelper.FindLogicalNode((DependencyObject)provider.RootObject,
ElementName) as DataGrid;
....
}
IRootObjectProvider
will get you RootObject which will be UserControl
and eventually can get you DataGrid by traversing LogicalTree and not VisualTree since it will return null. (Visual Tree not created yet).