【问题标题】:how to bind isselected property of tabitem in xaml如何在xaml中绑定tabitem的isselected属性
【发布时间】:2016-02-15 16:12:52
【问题描述】:

我的mainwindow.xaml 上有 5 个标签。每个选项卡上都有一个按钮。单击按钮时,我必须将视图更改为下一个选项卡。

我可以通过将TabItemIsSelected 属性绑定到我以前的按钮命令属性(我正在使用命令启用/禁用按钮)在 xaml 本身中执行此操作(更改按钮单击时的选项卡)吗?

我的CanExecute 将检查按钮的IsEnabled 属性。

我可以通过更改SelectedTabIndexSelectedTabItem 在后面的代码中做到这一点。但是我可以在 xaml 中遵循 MVVM 模式吗?

如果我的问题不是一个有效的问题,请忽略它。

注意:我的标签不是来自模板。

【问题讨论】:

  • 您可以在 ViewModel 中执行此操作。标签是动态的吗?还是固定金额?
  • 您好,感谢您的回复。我的标签是固定的。
  • TabControl.SelectedItem 应该保存作为该特定 TabItem 的 DataContext 的视图模型或模型。对于大多数项目控件,您可以将 ItemsSource 或类似属性绑定到控件中显示的项目列表,然后 SelectedItem 跟踪用户选择的列表中的项目。

标签: c# wpf xaml mvvm


【解决方案1】:

使用 TabControl 的 Style

<Style TargetType="TabControl">
        <Setter Property="SelectedIndex" Value="{Binding SelectedIndex}"/>
</Style>

将相同的Command 绑定到所有按钮,并在每次单击时不断增加ViewModel 中的SelectedIndex 属性。

ViewModel 中的属性:

private int selectedIndex;

public int SelectedIndex
{
    get { return selectedIndex; }
    set { selectedIndex = value;
    UpdateProperty("SelectedIndex");
    }
}

命令动作:

SelectedIndex++;
if (SelectedIndex == 5)
{
    SelectedIndex = 0;
}

检查SelectedIndex = 5,因为您的标签是固定的。否则,您必须在ViewModel 的属性中绑定项目计数,然后进行检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2022-07-09
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多