Я хочу иметь возможность добавить в свой пользовательский элемент управления строку, которая будет фокусироваться на определенном элементе во время загруженного события для пользовательского элемента управления:
<UserControl custom:FocusOnElement.FocusOn="{Binding ElementName=MyTextBox}">
<TextBox x:Name="MyTextBox" Text="Focus on me" />
Мой класс пользовательских прикрепленных свойств выглядит следующим образом:
Public NotInheritable Class FocusOnElement
Public Shared FocusOnProperty As DependencyProperty = DependencyProperty.RegisterAttached("FocusOn", GetType(FrameworkElement), GetType(FocusOnElement), New FrameworkPropertyMetadata(AddressOf OnSetCallback))
Private Sub New()
End Sub
Public Shared Function GetFocusOn(element As UIElement) As FrameworkElement
Return CType(element.GetValue(FocusOnProperty), FrameworkElement)
End Function
Public Shared Sub SetFocusOn(element As UIElement, value As FrameworkElement)
element.SetValue(FocusOnProperty, value)
End Sub
Public Shared Sub FocusOnTarget(target As FrameworkElement)
Input.Keyboard.Focus(target)
End Sub
Public Shared Sub OnSetCallback(dependencyObject As DependencyObject, dependencyPropertyChangedEventArgs As DependencyPropertyChangedEventArgs)
Dim fwElement As FrameworkElement = TryCast(dependencyObject, FrameworkElement)
If fwElement Is Nothing Then Exit Sub
Dim target = GetFocusOn(fwElement)
If target Is Nothing Then Return
AddHandler fwElement.Loaded, Sub() FocusOnTarget(target)
End Sub
End Class
Когда я запускаю код, MyTextBox не получает фокус, но я не получаю никаких ошибок.Что я могу делать не так?Любая помощь или указатели или вещи, чтобы попробовать, будет принята с благодарностью.Спасибо.