5

我查看了大多数资源,但我可以找到一个好的解决方案。我有一个标签控件硬编码。

<TabControl TabStripPlacement="Left" Padding="0" Style="{DynamicResource SettingsTab}" ItemContainerStyle="{DynamicResource SettingsTabItemStyle}" Background="WhiteSmoke" >
                <TabItem Header="ΓΕΝΙΚΑ" Margin="0" IsEnabled="False" > <Grid /></TabItem>                              
                <TabItem Header="Προσωπικό" Margin="0" IsSelected="True">
                    <Grid MinHeight="400">                     

                        <ContentControl HorizontalAlignment="Stretch" Margin="50,67,50,0"  Name="ActiveItem" />
                    </Grid>
                </TabItem>
                <TabItem Header="Τραπέζια" Margin="0">
                    <Grid />
                </TabItem>

更新 - 重述问题
这是我自定义的选项卡控件。灰色文本是一个禁用的选项卡项,它的作用类似于一个组。像一般设置,系统设置等。所以它有一个导航菜单的作用。目前,我在每个 tabitem(不是禁用的)都有一个内容控件,并绑定了我想要的视图模型。
但我不能将 Conductor.Collection.OneActive 与 CM 一起使用。
为什么?
我已经从 CM 示例和其他示例中看到了 helloscreens 示例,但这里的问题是,如果我通过绑定执行此操作,那么除了创建一个无用的虚拟视图模型之外,没有其他方法可以显示禁用的 tabitems。那么我该如何实现这 ?

广告

4

1 回答 1

4

更新:来源在这里

我有一个标签控件硬编码。

这是一个要求吗?

但我不能将 Conductor.Collection.OneActive 与 CM 一起使用。为什么?

我认为这不起作用的原因是使用Conductor.Collection.OneActive您需要将 绑定ItemsSource到 Items 集合。如果你要绑定ItemsSource,你也不能在XAML.

我创建了一个不涉及在 xaml 中描述选项卡项的解决方案。

关键部分:

中描述ShellViewTabControl ItemContainerStyle可以将选项卡项IsEnabled属性绑定到视图模型。

 <TabControl x:Name="Items"
                    Grid.Row="1"
                    TabStripPlacement="Left">
            <TabControl.ItemContainerStyle>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
                </Style>
            </TabControl.ItemContainerStyle>
        </TabControl>

ShellViewModel 类似,但我们现在激活第二个视图模型,因为第一个未启用。

public class HeaderViewModel : BaseTabViewModel
    {
        public HeaderViewModel(string name)
        {
            DisplayName = name;
            IsEnabled = false;
        }
    }

  public ShellViewModel(Tab2ViewModel tab2ViewModel,
                              Tab3ViewModel tab3ViewModel
            )
        {
             Items.Add (new HeaderViewModel ("ΓΕΝΙΚΑ"));
            Items.Add(tab2ViewModel);
            Items.Add(tab3ViewModel);

            ActivateItem (tab2ViewModel);
        }

在视图模型的构造函数中启用或禁用选项卡项。

 public Tab2ViewModel()
        {
            DisplayName = "Προσωπικό";
            IsEnabled = true;
        }

未设置样式的结果是第一个选项卡项目被禁用,而接下来的两个选项卡项目被启用。

在此处输入图像描述

于 2012-11-04T04:54:59.620 回答