2011-03-07 38 views
0

禁用命令連接的按鍵我有一個簡單的場景,並用它巫我只是不能似乎解決過去幾天的問題。WPF:MVVM - 上的IValueConverter轉換例外

OK,首先我用MVVM綁定我的一個ViewModel視圖。我有我的看法幾個文本框女巫視圖模型結合幾個屬性(大多數字符串)(實際結合的自定義對象(Person類型,名稱SelectedPerson)與字符串的屬性,對象女巫是視圖模型的屬性)。該對象實現INotifyPropertyChanged和IDataErrorInfo。它也有一個名爲Age的int屬性。我也有我認爲一個按鈕女巫在我的視圖模型綁定到一個命令,CanExecute測試範圍內的命令巫婆SelectedPerson的屬性,如果全部都正確返回true。

現在我的問題是:如果我把我的年齡文本框從我的某種看法不是整數,紅色tectagle會出現(是正常的,因爲有一個例外的轉換),但在特定的時刻,在對象後面(SelectedPerson,類型Person)沒有發送newValue(setter到該屬性Age,或IDataErrorInfo成員不截取值....我猜是正常的,因爲沒有任何「新」值,因爲我把一個首先,文本框中的格式不正確)。因此,也許我再重複一遍,問題是:如果新Age(新的不正確Age)沒有設置,那麼後面的Object仍然保存最後一個值,如果它是正確的女巫,那麼命令本身是正確的(不確定將返回true)和按鈕啓用

正如你可以想像我想提交按鈕(這是一個按鈕女巫數據存儲模塊中保存當前的個人詳細信息)時,當前的屬性不通過throught轉換方法被禁用。我使用了一個IValueConverter類,並在該文本框綁定到年齡,我使用我的StringToIntConverter類....但轉換方法我不知道如何通過SelectedPerson綁定對象(我只是通過文本值,並返回int值)

我想一種方法可以通過使用MultiBinding方案,但我不確定。

如果我可以從該轉換器中傳遞Convert方法中的SelectedPerson,我可以使轉換器本身的命令無效。

Sory爲我的英語,我知道它遠非完美:)並預先感謝您的時間。

回答

1

我認爲最簡潔的解決方案是將文本框綁定到字符串屬性,並更新您的視圖模型,以便您的屬性名的IDataErrorInfo實現嘗試一個字符串來進行int轉換並返回結果。您的CanExecute測試也將包含此轉換作爲驗證測試​​的一部分。

相關問題