NumericUpDown - 未设置焦点

NumericUpDown - Focus not set

我正在使用 NumericUpDown 控件(来自 WPFs 扩展工具包版本 2.9),我正试图通过附加的 属性.

将焦点设置在它上面

我的XAML

<xctk:DecimalUpDown FormatString="F5" 
   wbui:FocusExtension.IsFocused="{Binding Path=IsFocusedMenge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
   Value="{Binding Path=Menge, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
/>

这是我的FocusExtensiion.IsFocues

private static void IsFocusedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var fe = (FrameworkElement)d;

    if (e.OldValue == null)
    {
        fe.GotFocus += FrameworkElement_GotFocus;
        fe.LostFocus += FrameworkElement_LostFocus;
    }

    if (!fe.IsVisible)
    {
        fe.IsVisibleChanged += new DependencyPropertyChangedEventHandler(FrameworkElement_IsVisibleChanged);
    }

    if ((bool)e.NewValue)
    {
        fe.Focus(); // will be called
    }
}

当我将 属性 IsFocusedMenge 设置为 true 时,将不会设置焦点。当我在那里设置断点时,将调用代码行 fe.Focus()。

我在这里找到了另一个主题(How to set focus on NumericUpDown control?),但是当我设置这个属性Focusable=true时,我在调用fe.Focus()方法时会得到一个WhosebugException。

有什么想法吗?谢谢

更新

还尝试将事件添加到网格,以在 View/UserControl 中设置焦点...但没有成功。

private void GridMenge_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    if ((bool)e.NewValue)
    {

      this.Menge.Focus();
    }
}

焦点仍未设置(属性 可聚焦设置为 True/False - 无变化)

我从官方支持那里得到了一些信息

这已经修复。该修复包含在 v3.1 中。 (您可以在此处查看讨论主题:https://wpftoolkit.codeplex.com/discussions/658785

要修复它,请进入文件:

Xceed.wpf.Toolkit/NumericUpDown/Themes/Aero2.NormalColor.xaml (Windows8 及以上)

Xceed.wpf.Toolkit/NumericUpDown/Themes/Generic.xaml (对于其他 Windows)

符合 "NumericUpDown"

的样式

a) 替换

<Setter Property="Focusable" Value="False" /> 

<Setter Property="IsTabStop" Value="False" /> 

b) 在 "PART_TextBox"

替换

IsTabStop="{TemplateBinding IsTabStop}" 

IsTabStop="True"