2017-07-17 71 views
0

当我进入文成DoubleUpDown控制,复位和控制以红色突出显示。 它看起来像这样:如何使默认的DoubleUpDown验证样式?

UpDown control

如何申请相同的风格为负数?

我通过创建PositiveNumberToColorConverter做到这一点,并将其应用巫边界:

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> 

但是,它看起来像这样:

With Border

如何使这样在负数的输入它突出显示在第一张图片上(默认情况下如何实现文本输入)?

回答

1

如果不这样做的用户能够输入负值,则应该将Minimum属性设置为0

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

,你所看到的红色边框是默认Validation.ErrorTemplate的一部分。

+0

没有。我会立即尝试 –