2013-02-13 31 views
2

我有以下XAML變空UpdateSourceTrigger不工作 -當文本框

<TextBox Text="{Binding Path=NumberOfItems, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" /> 
<Button Command="{Binding Path=StartCommand}">Start</Button> 

在視圖模型 -

public string this[string columnName] 
    { 
     get 
     { 
      string result = null; 
      switch (columnName) 
      { 
       case "NumberOfItems": 
        if (this.NumberOfItems <= 0) 
        { 
         result = "Items required"; 
        } 
        break; 
      } 

      return result; 
     } 
    } 

無論何時,文本框的變化值觸發相應的工作。但在下列情況下,這是行不通的 -

  1. 當用戶按下鍵盤按鍵刪除選擇文本的全文後。

  2. 當用戶刪除TextBox中存在的最後一個字符時。

但ValidatesOnDataError正在工作。

如何在TextBox清空時使其工作?

當用戶輸入任何無效數據時,文本框樣式發生更改。我希望通過單擊「開始」按鈕來了解這一點。

如何知道開始按鈕TextBox有無效數據?

回答

1

當用戶輸入任何無效數據時,文本框樣式發生更改。我希望通過單擊「開始」按鈕來了解這一點。

如何知道開始按鈕TextBox有無效數據?

改變你的驗證代碼:

case "NumberOfItems": 
       if (this.NumberOfItems==null || this.NumberOfItems <= 0) 
       { 
        result = "Items required"; 
       } 
       break; 

你都可以StartCommand

+0

我試過你的解決方案,但同樣的事情正在發生。當TextBox清空時,其樣式會發生變化,但是string.IsNullOrEmpty(this [「NumberOfItems」])的結果總是爲真 – user2039445 2013-02-13 10:37:09

+0

@ user2039445:您是否在綁定中添加了'TargetNullValue = {x:Static sys:String.Empty}'@Manish說? – Bolu 2013-02-13 10:48:27

+0

謝謝。它工作完美 – user2039445 2013-02-13 10:49:50

4

我猜你正在嘗試綁定一個integer類型的屬性到你的文本框的text屬性。由於整數不能爲空,在這種情況下,空字符串將不起作用。您可以使用可爲空的整數,也可以創建自己的轉換器來處理空字符串。

+0

CanExceuteStartCommand你是對的內查string.IsNullOrEmpty(this["NumberOfItems"])。我已將它設爲空,但它不起作用。 – user2039445 2013-02-13 09:40:02

+5

Try this Text =「{Binding Path = NumberOfItems,NotifyOnSourceUpdated = True,TargetNullValue = {x:Static sys:String.Empty},ValidatesOnDataErrors = True}」您將不得不添加命名空間xmlns:sys =「clr-namespace: System; assembly = mscorlib「 – Manish 2013-02-13 09:46:30

+0

Thanks Manish,Text =」{Binding Path = NumberOfItems,NotifyOnSourceUpdated = True,TargetNullValue = {x:Static sys:String.Empty},ValidatesOnDataErrors = True}「工作! – sunil5715 2013-10-04 21:48:23

相關問題