2009-05-30 21 views
0

我正在用簡單的WPF應用程序的上下文來試驗MVVM。我有一個命令附加到一個按鈕。如果文本框中的文本是'不正確'的,我希望文本框獲得焦點並選擇所有內容。這似乎是做到這一點的唯一方法,可以通過從我的ViewModel中的Command直接調用View,或者設置ViewModel觸發和View監聽的某種事件。從那裏視圖可以直接調用有問題的TextBox。我試圖保持在MVVM的分離性質,但它似乎沒有辦法,我可以得到這種行爲聲明在XAML,或直接在ViewModel代碼沒有至少間接與視圖說話(或者界面或事件)。我還必須在ViewModel中保存對視圖的引用。如何將注意力集中到ViewModel的文本框中並選擇文本

在這裏什麼會被認爲是「最佳實踐」,以及視圖真的應該來自​​ViewModels在'真正'MVVM應用程序中的解耦?

+0

http://stackoverflow.com/questions/1356045/set-focus-on-textbox-in-wpf-from-view-model-c-wpf – gschuager 2009-11-24 18:54:18

回答

1

它是直接綁定到您的UI控件的代碼,所以我認爲在這種情況下,View的代碼隱藏是它的所在。你可能想要設置一個事件或類似的東西。這樣它仍然像以前一樣解耦 - 無論如何,視圖知道視圖模型,在代碼隱藏中只有幾行代碼。

+0

我同意。由於這個問題在用戶界面中確實是一個可視化的東西,它似乎應該在視圖中。對我來說,Xaml IS代碼很難閱讀...... View中的一些代碼可以選擇一些隱藏在某個可以被模擬的界面後面的文本,或者一些事件看起來很好,這與試圖設置依賴項屬性相比似乎很好。 ViewModel中的focus和selectalltext屬性看起來倒退了,因爲這些東西根本不能提供「模型視圖」。過多的環節,以及對責任分離更加混淆。 – deep108 2009-09-02 07:11:00

0

我遇到了同樣的問題,我所做的是製作了一個自定義文本框,並從此控件公開依賴項屬性。

和focus一樣,selectalltext並綁定這些屬性來查看模型。

相關問題