2013-02-26 19 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 2013-02-26 22:33:27

+0

你必須從現有的風格繼承新的風格。查看BasedOn屬性。 – mdm20 2013-02-26 22:35:49

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 2013-02-26 23:01:37