ОК, я нашел, как это сделать сам.
Сначала определим наше новое свойство зависимости FocusedAdapterProperty
как обычно:
public static readonly DependencyProperty FocusedAdapterProperty;
static SpreadGridControl()
{
FocusedAdapterProperty = DependencyProperty.Register("FocusedAdapter",
typeof(object), typeof(SpreadGridControl),
new FrameworkPropertyMetadata(null, null));
}
public object FocusedAdapter
{
get { return GetValue(FocusedAdapterProperty); }
set { SetValue(FocusedAdapterProperty, value); }
}
Затем добавим обработчик GotFocus в родительский контейнер, например <Grid GotFocus="Grid_OnGotFocus">
Проверьте e.OriginalSource и найдите наиболее распространенного предка требуемого типа и установите для свойства новое значение:
private void Grid_OnGotFocus(object sender, RoutedEventArgs e)
{
var control = UIHelpers.TryFindParent<ControlBase>
((DependencyObject)e.OriginalSource);
if (control != null)
FocusedAdapter = control.Adapter;
}
Реализация TryFindParent можетможно найти здесь