2009-05-28 130 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