gpt4 book ai didi

wpf - 使用 MVVM 将焦点设置到 WPF 中的控件

转载 作者:行者123 更新时间:2023-12-02 18:14:09 27 4
gpt4 key购买 nike

当我单击 View 上的按钮时,我希望将键盘焦点设置为文本框。我不想使用任何代码隐藏,所以想知道是否有人编写了附加属性或类似的解决方案?

最佳答案

试试这个:

public static class FocusBehavior
{
public static readonly DependencyProperty ClickKeyboardFocusTargetProperty =
DependencyProperty.RegisterAttached("ClickKeyboardFocusTarget", typeof(IInputElement), typeof(FocusBehavior),
new PropertyMetadata(OnClickKeyboardFocusTargetChanged));

public static IInputElement GetClickKeyboardFocusTarget(DependencyObject obj)
{
return (IInputElement)obj.GetValue(ClickKeyboardFocusTargetProperty);
}

public static void SetClickKeyboardFocusTarget(DependencyObject obj, IInputElement value)
{
obj.SetValue(ClickKeyboardFocusTargetProperty, value);
}

private static void OnClickKeyboardFocusTargetChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var button = sender as ButtonBase;
if (button == null)
return;

if (e.OldValue == null && e.NewValue != null)
button.Click += OnButtonClick;
else if (e.OldValue != null && e.NewValue == null)
button.Click -= OnButtonClick;
}

private static void OnButtonClick(object sender, RoutedEventArgs e)
{
var target = GetKeyboardClickFocusTarget((ButtonBase)sender);

Keyboard.Focus(target);
}
}

然后使用它,

<TextBox x:Name="TargetTextBox"/>
<Button b:FocusBehavior.ClickKeyboardFocusTarget="{Binding ElementName=TargetTextBox}"/>

关于wpf - 使用 MVVM 将焦点设置到 WPF 中的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com