Nicht meine Liebling Lösung, aber eine Behelfslösung, ohne hinter den TextBox
von Code zugreifen.
ich eine angefügte Eigenschaft implementiert, setzt den Fokus auf ein Steuerelement, falls die Eigenschaft auf true
gesetzt.
public class FocusHelper : DependencyObject
{
#region Attached Properties
public static readonly DependencyProperty IsFocusedProperty = DependencyProperty.RegisterAttached("IsFocused", typeof(bool), typeof(FocusHelper), new PropertyMetadata(default(bool), OnIsFocusedChanged));
public static bool GetIsFocused(DependencyObject obj)
{
return (bool)obj.GetValue(IsFocusedProperty);
}
public static void SetIsFocused(DependencyObject obj, bool value)
{
obj.SetValue(IsFocusedProperty, value);
}
#endregion
#region Methods
public static void OnIsFocusedChanged(DependencyObject s, DependencyPropertyChangedEventArgs e)
{
var ctrl = s as Control;
if (ctrl == null)
{
throw new ArgumentException();
}
if ((bool)e.NewValue)
{
ctrl.Focus(FocusState.Keyboard);
}
}
#endregion
}
So kann ich diese eigenschaft auf meine IsDropDownOpen
Eigenschaft binden. So öffnen jedes Mal, wenn ich th e Drop-Down, der TextBox
wird den Fokus bekommen.
<TextBox helper:FocusHelper.IsFocused="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}" ...
Das ist ärgerlich. Weißt du, ob es möglich ist, eine benutzerdefinierte Animation in UWP zu erstellen? Ich kann von 'TimeLine' oder' ObjectKeyFrame' ableiten, aber es gibt nichts, um einen Wert wie 'GetCurrentValue' in WPF zu animieren. – Koopakiller
Sorry, aber ich habe WPF nie versucht ... Was willst du animieren? –
In WPF können Sie eine benutzerdefinierte Animation erstellen. So können Sie den Fokus zu einem bestimmten Zeitpunkt auf ein bestimmtes Steuerelement setzen. Aber ich weiß nicht, ob es auch in UWP möglich ist. – Koopakiller