2010-08-25 57 views
0

我有一個按鈕限定在textblock的Validation.HasError屬性上。文本塊具有驗證規則,用於檢查用戶輸入的值。綁定的目的是如果用戶輸入了錯誤的數據,該按鈕應該被禁用。綁定發生在驗證之前

問題是ValidationRule在綁定後執行。因此,當用戶輸入錯誤的值時,綁定將檢查文本塊的HasError屬性,該屬性爲FALSE,因此該按鈕爲Enabled。然後執行驗證規則。它會導致texblock無效並且按鈕被啓用的情況發生逆轉。

如何指定首先執行哪個(綁定和驗證)?

這裏的XAML:

<MultiBinding Converter="{StaticResource ButtonVisibilityConverter}" UpdateSourceTrigger="PropertyChanged" Mode="OneWay" > 
    <Binding ElementName="integerInput" Path="HasValidationError"/> 
    <Binding ElementName="doubleInput" Path="HasValidationError"/> 
    </MultiBinding> 

</Button.IsEnabled> 

我敢肯定它是不是這樣的。 我正在談論的textblock控件是一個自定義微調控件(帶有兩個+/-按鈕的文本框)。微調器的內容綁定到視圖模型中的一個屬性。每次我們點擊+或 - 按鈕,一個命令被執行,並增加或減少文本框中的值。

回答

1

您使用哪種XAML將按鈕綁定到文本框?對HasError屬性的任何更改都應該觸發綁定,以重新評估按鈕,而不管在何種階段進行驗證。

您確定您的問題不是當HasErrors屬性爲false時,您希望IsEnabled屬性爲true並且您沒有顛倒綁定中的值?