2016-10-16 2 views
0

J'utilise le contrôle NumericUpDown (à partir de la version 2.9 de la boîte à outils étendue WPF) et j'essaie de définir le focus via la propriété attachée.NumericUpDown - Mise au point non définie

Mon XAML

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

Voici mes 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 
    } 
} 

Quand je tournerai ma propriété IsFocusedMenge true, l'accent ne sera pas mis. La ligne de code fe.Focus() sera appelée quand j'y ai placé un point d'arrêt.

J'ai trouvé un autre sujet ici (How to set focus on NumericUpDown control?), mais quand je mets cet attribut Focusable = true, j'obtiendrai une exception StackOverFlowException lors de l'appel de la méthode fe.Focus().

Des idées? THX.

Mise à jour

a également essayé avec l'ajout d'un événement à la grille, pour régler la mise au point dans la vue/UserControl ... mais sans succès.

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

     this.Menge.Focus(); 
    } 
} 

mise au point est toujours pas réglée (propriété Focusable réglé sur Vrai/Faux - pas de changement)

Répondre

0

Je suis arrivé quelques informations du soutien officiel.

Ceci est déjà corrigé. Le correctif est inclus dans v3.1. (Vous pouvez voir le fil de discussion ici: https://wpftoolkit.codeplex.com/discussions/658785)

Pour résoudre ce problème, allez dans le fichier:

Xceed.wpf.Toolkit/NumericUpDown/Thèmes/Aero2.NormalColor.xaml (pour Windows8 et jusqu'à)

Xceed.wpf.Toolkit/NumericUpDown/Thèmes/generic.xaml (pour les autres Windows)

Dans le style de "NumericUpDown"

a) Remplacer

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

avec

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

b) Dans le "PART_TextBox"

remplacer

IsTabStop="{TemplateBinding IsTabStop}" 

avec

IsTabStop="True"