NumericUpDown - 未设置焦点

时间:2016-10-16 08:53:45

标签: wpf focus wpftoolkit numericupdown

我正在使用NumericUpDown控件(来自WPF扩展工具包版本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
    }
}

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

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

有什么想法吗? THX。

更新

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

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

      this.Menge.Focus();
    }
}

仍未设置焦点(Property Focusable设置为True / False - 无变化)

1 个答案:

答案 0 :(得分:0)

我从官方支持部门获得了一些信息。

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

要修复它,请进入文件:

<强> Xceed.wpf.Toolkit /的NumericUpDown /主题/ Aero2.NormalColor.xaml (适用于Windows8及更高版本)

<强> Xceed.wpf.Toolkit /的NumericUpDown /主题/ Generic.xaml (对于其他Windows)

在&#34; NumericUpDown&#34;的样式中

a)替换

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

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

b)在&#34; PART_TextBox&#34;

替换

IsTabStop="{TemplateBinding IsTabStop}" 

IsTabStop="True"