Уже поздно ... Я решил это с помощью прикрепленного свойства. В приведенном выше решении я скопировал ранее созданный DP и не изменил код до тестирования.
Ниже приведен рабочий раствор
Я создал класс прикрепленных свойств, а затем добавил следующий код:
#region Search Field Focus
public static DependencyProperty InitialFocusProperty = DependencyProperty.RegisterAttached("InitialFocus", typeof(bool), typeof(AttachedProperties), null);
public static void SetInitialFocus(UIElement element, bool value)
{
Control c = element as Control;
if (c != null && value)
{
RoutedEventHandler loadedEventHandler = null;
//set focus on control
loadedEventHandler = new RoutedEventHandler(delegate
{
HtmlPage.Plugin.Focus();
c.Loaded -= loadedEventHandler;
c.Focus();
});
c.Loaded += loadedEventHandler;
}
}
public static bool GetInitialFocus(UIElement element)
{
return false;
}
#endregion
#region Tabbing Order of Elements
public static DependencyProperty TabIndexProperty = DependencyProperty.RegisterAttached("TabIndex", typeof(int), typeof(AttachedProperties), null);
public static void SetTabIndex(UIElement element, int value)
{
element.SetValue(TabIndexProperty, value);
}
public static int GetTabIndex(UIElement element)
{
return (int)element.GetValue(TabIndexProperty);
}
#endregion
Первый DP устанавливает фокус текстового блока так, что при загрузке пользовательского элемента управления вы видите курсор, помещенный в текстовое поле.
DP 2 устанавливает порядок табуляции. Так как фокус уже применен к текущему элементу управления, вкладка становится на свои места нормально. Если вы не сфокусировались на элементе управления, вам нужно сначала установить его.
затем, наконец, в xaml объявите свой класс в xmlns и добавьте элементы управления.