2009-05-28 196 views
0

我正在開發一個帶有wpf的mvvm應用程序。如果文本框包含文本,就會添加一項要求以阻止用戶更改標籤。MVVM Tabcontrol更改選項卡

在視圖模型中完成此操作的最佳方法是什麼?我不知道如何阻止tabitem,因爲在tabcontrol中沒有依賴關係對象命令來綁定,我是否需要滾動我自己的tabcontrol並圍繞SelectionChanged事件構建一個ICommand?

我應該簡單地(eegad ..不要說)把代碼放在SelectionChanged事件中的視圖後面的代碼中嗎?

我有另一種我沒有想到的方法嗎?

回答

5

您可能會考慮將每個TabItems的IsEnabled屬性綁定到ViewModel中的屬性(例如ViewModel.TabsEnabled),並在文本框帶有文本時將該屬性設置爲False。這樣,您就可以在ViewModel中啓用/禁用這些選項卡,而無需爲該特定視圖創建代碼。

這意味着你有這樣的事情在你看來如下(假設你的視圖模型是一個名爲視圖模型靜態類):

<TabItem IsEnabled="{Binding Source={x:Static local:ViewModel.TabsEnabled}}"/> 

然後你只需要設置對視圖模型時,一個TabsEnabled財產的文本框有內容;有幾種方法可以做到這一點,但是如果它們綁定到ViewModel上,您應該有足夠的機會來聽取更改並根據需要設置TabsEnabled。

+1

從我讀到的更正確的使用* IsEnabled *而不是* TabsEnabled *,* Tabs *假設視圖(從視圖模型)的知識。 – si618 2010-09-02 11:37:51