2013-02-26 2 views
0

모든 텍스트 상자에서 유효성 검사에 동일한 바인딩을 적용하려는 응용 프로그램이 있습니다.여러 컨트롤에서 동일한 컨트롤 바인딩

<TextBox Height="23" HorizontalAlignment="Left" Margin="71,76,0,0" Name="textBox1" VerticalAlignment="Top" Width="229" Style="{StaticResource ResourceKey=errorMsgStyle}">    
**<TextBox.Text> 
      <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit"> 
       <Binding.ValidationRules> 
        <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/> 
       </Binding.ValidationRules> 
      </Binding> 
     </TextBox.Text>** 

    </TextBox> 

(**) 내의 부분은 모든 텍스트 상자에서 동일하지만 모든 항목을 복사하여 붙여 넣기를 반복하고 싶지는 않습니다.

불행히도 응용 프로그램은 MVVM을 사용하지 않습니다. 누군가가이 검증 바인딩을 템플릿 (또는 이와 비슷한 것)으로 정의하고 어디서나 사용하는 방법을 알려주시겠습니까?

답변

0

스타일에 바인딩을 설정하면됩니다. 물론

 <Style x:Key="ValidatedTextBox" TargetType="TextBox"> 
     <Setter Property="Text"> 
      <Setter.Value> 
       <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit"> 
        <Binding.ValidationRules> 
         <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/> 
        </Binding.ValidationRules> 
       </Binding> 
      </Setter.Value> 
     </Setter> 
    </Style> 

, 글 상자의 모두 동일한 소스에 바인딩 할 것입니다 ... 이것은 당신이 비록 원하는 것을 할 수있다.

+0

감사합니다. TextBox에서 이미 "스타일"속성을 사용하고 있습니다. 다른 하나도 어떻게 사용할 수 있는지 말해 주시겠습니까? – naspras

+0

기존 스타일에서 새 스타일을 상속해야합니다. BasedOn 속성을 살펴보십시오. – mdm20

0
<Window.Resources> 
    <Binding x:Key="Validation" RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit"> 
     <Binding.ValidationRules> 
      <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/> 
     </Binding.ValidationRules> 
    </Binding> 
</Window.Resources> 

예 : 당신의 응답을

<TextBox Text="{StaticResource Validation}"/> 
+0

'Resources'에'Binding'을 넣을 수 없습니다. – Jon

관련 문제