2013-03-18 5 views
4

Я проверен на текстовое поле.WPF-код проверки подлинности на стороне клиента

Но я хочу сделать некоторый стиль на текстовом поле на различной фазе.

Когда моя страница загружается в первый раз, текстовое поле выглядит следующим образом. enter image description here

Когда пользователь начинает вводить значение, а если значение неверно, весь фон текстового поля будет красным. enter image description here

Когда пользователь вводит правое значение, текстовое поле имеет GREEN Border с 2PX.
enter image description here

Я использую следующий стиль:

<Style x:Key="TxtEmailStyle" TargetType="{x:Type TextBox}"> 
     <Setter Property="Background" Value="#2d2f34"></Setter> 
     <Setter Property="Foreground" Value="White"></Setter> 
     <Setter Property="TextBlock.FontSize" Value="14" /> 
     <Setter Property="Padding" Value="5" /> 
     <Setter Property="BorderBrush" Value="Green"></Setter> 
     <Setter Property="BorderThickness" Value="2"></Setter> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel LastChildFill="True"> 
         <TextBlock DockPanel.Dock="Right" 
         Foreground="Orange" 
         FontSize="12pt"> 
         !!!! 
         </TextBlock> 
         <Border BorderBrush="Green" BorderThickness="1"> 
          <AdornedElementPlaceholder /> 
         </Border> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsFocused" Value="true"> 
       <Setter Property="Background" Value="#56585e" /> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="true"> 
       <Setter Property="Background" Value="#07839a" /> 
      </Trigger> 
      <Trigger Property="Validation.HasError" Value="true"> 
       <Setter Property="ToolTip" 
     Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
         Path=(Validation.Errors)[0].ErrorContent}"/> 
       <Setter Property="Background" Value="#cb0b38"></Setter> 
      </Trigger> 
      <!--<Trigger Property="Validation.HasError" Value="false"> 
       <Setter Property="BorderBrush" Value="Green"></Setter> 
       <Setter Property="BorderThickness" Value="2"></Setter> 
       <Setter Property="Background" Value="#2d2f34"></Setter> 
      </Trigger>--> 

     </Style.Triggers> 
    </Style> 

Ниже мой TextBox

<TextBox x:Name="txtPlayerID" HorizontalAlignment="Left" Height="30" TextWrapping="Wrap" 
            VerticalContentAlignment="Center" 
        Style="{StaticResource TxtEmailStyle}" VerticalAlignment="Top" Width="228" FontFamily="Arial Regular" 
        RenderTransformOrigin="0.408,-2.455" FontSize="14" 
            Margin="27,0,0,0"> 

           <TextBox.Text> 

            <Binding Path="playerID" Source="{StaticResource Register}" 
          ValidatesOnDataErrors="True"  NotifyOnValidationError="True" 
         UpdateSourceTrigger="PropertyChanged"> 
             <Binding.ValidationRules> 

              <ExceptionValidationRule/> 
             </Binding.ValidationRules> 
            </Binding> 
           </TextBox.Text> 
          </TextBox> 
+2

Вопрос в том, что вы сделали это или хотите сделать это? – Shrivallabh

+0

@ Shrivallabh: Я хочу изменить стиль рамки TextBox на основе пользовательского ввода: - если правильный ввод Сделать зеленым, если неправильный вход Background Red, и если нет ввода, то стиль по умолчанию для текстового поля – ujjaval

+0

Вы можете показать свое свойство зависимости который имеет 'playerID'? –

ответ

0

на засыпку/некрасиво подход использовать раскадровку (может быть сложно, как вы не нужно анимации, но вы можете изменить время анимации до бесконечности) ниже - это фрагмент кода:

<Storyboard x:Key="ChangeBkColor" Storyboard.TargetProperty="(TextBox.Background)"> 
    <ColorAnimation Storyboard.TargetProperty="Background.Color" 
      From="Red" To="Red" Duration="0:0:10"/> <!--Change 10 secs to yours--> 
</Storyboard> 

И где-то, например. в тексте изменен обработчик события

Storyboard sb = this.FindResource("ChangeBkColor") as Storyboard; 
if (sb != null && SomeCondition1) <!--SomeCondition1: for red background--> 
{ 
    Storyboard.SetTarget(sb, this.txtPlayerID); 
    sb.Begin(); // Here comes the effect! 
} 

Вы должны создать две сюжетные доски для Вашего случая, и в тексте изменен обработчик, скажите, какие условия, и выборочно играть сюжетные доски.

Смежные вопросы