【问题标题】:MVVM Tabcontrol change tabMVVM Tabcontrol 更改选项卡
【发布时间】:2009-05-28 16:35:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf mvvm viewmodel


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 根据我的阅读,使用类似 IsEnabled 而不是 TabsEnabled 更正确,因为 Tabs 假设视图知识(来自视图模型)。
    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多