0

我正在用 wpf 开发一个 mvvm 应用程序。如果文本框有文本,则刚刚添加了一个要求以阻止用户更改选项卡。

在视图模型中完全做到这一点的最佳方法是什么?我不知道如何阻止 tabitem,因为 tabcontrol 中没有要绑定的依赖对象命令,我是否需要滚动自己的 tabcontrol 并围绕 SelectionChanged 事件构建 ICommand?

我应该简单地(eegad..不要说)将代码放在 SelectionChanged 事件中视图后面的代码中吗?

我有没有想到的替代方案?

4

1 回答 1

5

您可以考虑将每个 TabItems 的 IsEnabled 属性绑定到 ViewModel 中的一个属性(例如 ViewModel.TabsEnabled),并在文本框有文本时将该属性设置为 False。这样,您就可以从 ViewModel 启用/禁用这些选项卡,而无需为该特定视图提供代码隐藏文件。

这意味着您的视图中将包含以下内容(假设您的 ViewModel 是一个名为 ViewModel 的静态类):

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

然后,当其中一个文本框有内容时,您只需在 ViewModel 上设置 TabsEnabled 属性;有几种方法可以做到这一点,但如果它们绑定到您的 ViewModel,您应该有很多机会来监听更改并根据需要设置 TabsEnabled。

于 2009-05-28T21:42:32.577 回答