2012-01-12 107 views
0

我有一個WPF MVVM應用程序,它包含一個帶有幾個文本框的數據輸入表單。我注意到,當用戶在文本框中並做出更改時,上下文對象不知道發生了更改,直到用戶跳出該文本框。一旦用戶退出文本框,一切正常。但是我想知道一個變化是在用戶不必去掉文本框的情況下做出的。以WPF數據輸入格式保存

這可能嗎?

我的表單的工作方式是保存和取消按鈕綁定到ICommands。這些命令有一個「CanSave」和「CanCancel」方法,用於檢查EntityState是否改變,但允許啓用按鈕。這很好用,但用戶不得不關閉文本框才能使其工作。

如何在沒有用戶切換更改的文本框的情況下進行此項工作?

回答

1

設置綁定方向(模式)文本框的是雙向的,而不是默認,並設置UpdateSourceTrigger進行的PropertyChanged,而不是默認的......像這樣:

<TextBox x:Name="txtPersonLastname" Text="{Binding Person.LastName, Mode=TwoWay, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" /> 

(我有一些額外的屬性在本節摘錄中進行驗證。)

關鍵的區別是PropertyChanged會更新ViewModel中的支持屬性。當用戶在TextBox中鍵入任何內容時,該PropertyChanged事件將觸發,並且反過來會觸發您的CanSave,Save例程。

在Blend,它應該是這樣的:Blend 4 Text Binding

1

你必須chnage更新源trigger屬性refelct的chages在你的視圖模型

對於實例

<TextBox Text={Binding Path=MyProperty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}></TextBox> 

不要忘了, My Property應該火從ViweModel更改屬性