2017-07-17 5 views
0

Lorsque j'entre le texte dans le champ DoubleUpDown, il est réinitialisé et le contrôle est surligné en rouge. Il ressemble à ceci:Comment rendre le style de validation DoubleUpDown comme valeur par défaut?

UpDown control

Comment puis-je appliquer le même style à un nombre négatif?

je le fais en créant PositiveNumberToColorConverter et l'appliquer frontière de sorcière:

public class PositiveNumberToColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if(value is int?) 
     { 
      var intValue = (int?)value; 
      if (intValue == null) 
       return Brushes.Transparent; 
      else if (intValue.HasValue&&intValue.Value>=0) 
       return Brushes.Transparent; 

      else if(intValue.HasValue==false) 
       return Brushes.Transparent; 
      return Brushes.Red; 
     }   
     return Brushes.Red; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 


<Border 
            Grid.Column="0"                    
            BorderThickness="1" 
            Background="Transparent"           
            BorderBrush="{Binding ObjectViewModel.Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource positiveNumberConverter}}"                              
          IsEnabled="{Binding ObjectViewModel.IsEnabled,Mode=TwoWay,TargetNullValue=False,FallbackValue=False,UpdateSourceTrigger=PropertyChanged}" 
            > 
          <xcd:DoubleUpDown 
          HorizontalAlignment="Stretch" 
          Margin="5" 
          Grid.Column="0" 
          Minimum="0" 
          Height="{Binding ElementName=tbName,Path=Height}" 
          Width="Auto" 
          IsEnabled="{Binding ObjectViewModel.IsEnabled,Mode=TwoWay,TargetNullValue=False,FallbackValue=False,UpdateSourceTrigger=PropertyChanged}" 
          Text="{Binding ObjectViewModel.Value,Mode=TwoWay,UpdateSourceTrigger=LostFocus}" > 
           <xcd:DoubleUpDown.Resources> 
            <Style TargetType="Popup"> 
             <Setter Property="TextBlock.TextAlignment" Value="Left"/> 
            </Style> 
           </xcd:DoubleUpDown.Resources> 
          </xcd:DoubleUpDown> 
         </Border> 

Mais, il ressemble à ceci:

With Border

Comment faire en sorte que l'entrée d'un nombre négatif il a été mis en évidence comme sur la première image (comment est-il implémenté en contrôle par défaut pour la saisie de texte)?

Répondre

1

Si vous n'êtes pas l'utilisateur d'être en mesure de saisir des valeurs négatives, vous devez définir la propriété Minimum-0:

<xctk:DoubleUpDown ... Minimum="0" /> 

La frontière rouge que vous voyez est une partie de la valeur par défaut Validation.ErrorTemplate.

+0

pas encore. Je vais essayer tout de suite –