2017-05-24 49 views
0

我在StackOverflow上找到了各種答案,他們都沒有幫助我。 我想關閉文本框驗證IsEnabled="false" 我在這裏丟失了什麼?如何在TextBox屬性IsEnabled爲false時禁用驗證?

<TextBox x:Name="idTxtBox"> 

     <!--This is where I tried to disable validation--> 
     <TextBox.Style> 
      <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 
       <Style.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 

     <!--I want to disable these validation rules--> 
     <TextBox.Text> 
      <Binding Path="ID" UpdateSourceTrigger="PropertyChanged"> 
       <Binding.ValidationRules> 
        <val:RequiredFieldValidation ValidationStep="RawProposedValue"/> 
        <val:IsNumberValidation Min="1" Max="250" ValidationStep="ConvertedProposedValue"/> 
        <val:UniqueIDTag ValidationStep="RawProposedValue"/> 
       </Binding.ValidationRules> 
      </Binding> 
     </TextBox.Text> 



     <Validation.ErrorTemplate> 
      <!--........--> 
     </Validation.ErrorTemplate> 
    </TextBox> 

回答

0

沒有好的Minimal, Complete, and Verifiable code example顯示你的代碼是如何工作的,以及你想要的代碼做,爲什麼你目前的做法並沒有實現這一目標,就很難更具體的解釋,肯定知道答案會爲你服務最好。但是,在我看來,你正走在正確的軌道上,你只是在改變錯誤的財產。

我不希望刪除ErrorTemplate值來影響是否發生驗證,正是用戶看到的。如果你想刪除驗證,你應該這樣做:刪除驗證。例如:

<TextBox.Style> 
    <p:Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 
     <p:Style.Triggers> 
      <Trigger Property="IsEnabled" Value="false"> 
       <Setter Property="Text" Value="{Binding ID}"/> 
      </Trigger> 
     </p:Style.Triggers> 
    </p:Style> 
</TextBox.Style> 

(忽略p:命名空間&hellip;我只是把在那裏,這樣的代碼格式化堆棧溢出使用不會得到扯到了Style元素名稱。)

在換句話說,驗證包含在綁定中。因此,如果您不希望進行驗證,請將綁定更改爲未驗證的綁定(並且由於該控件已禁用,您也可以省略值UpdateSourceTrigger)。

相關問題