Caliburn micro和tabcontrol

Gor*_*Ape 5 wpf mvvm caliburn.micro

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

<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>
Run Code Online (Sandbox Code Playgroud)

更新 - 重述问题
这是我的自定义选项卡控件.灰色文本是一个禁用的选项卡项,它就像一个组.与常规设置,系统设置等一样.因此它具有导航菜单的作用.Curently我有在每个的TabItem(未禁用的)内容控制和结合我想视图模型.
但是我不能在CM上使用Conductor.Collection.OneActive.
为什么?
我已经看到了CM样品等样品,但这里的问题是helloscreens例如,如果我通过结合这样做,那么有没有办法来显示不是创建无济于事purpose.So我如何实现虚拟视图模型等残疾人的TabItems这个 ?

广告

Der*_*tie 4

更新:来源在这里

\n\n
\n

我有一个选项卡控件硬编码。

\n
\n\n

这是一个要求吗?

\n\n
\n

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

\n
\n\n

我认为这不起作用的原因是Conductor.Collection.OneActive您需要将其绑定ItemsSource到 Items 集合。如果您要绑定,ItemsSource则无法同时描述 中的选项卡项XAML。

\n\n

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

\n\n

关键部分:

\n\n

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

\n\n
 <TabControl x:Name="Items"\n                    Grid.Row="1"\n                    TabStripPlacement="Left">\n            <TabControl.ItemContainerStyle>\n                <Style TargetType="{x:Type TabItem}">\n                    <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>\n                </Style>\n            </TabControl.ItemContainerStyle>\n        </TabControl>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
public class HeaderViewModel : BaseTabViewModel\n    {\n        public HeaderViewModel(string name)\n        {\n            DisplayName = name;\n            IsEnabled = false;\n        }\n    }\n\n  public ShellViewModel(Tab2ViewModel tab2ViewModel,\n                              Tab3ViewModel tab3ViewModel\n            )\n        {\n             Items.Add (new HeaderViewModel ("\xce\x93\xce\x95\xce\x9d\xce\x99\xce\x9a\xce\x91"));\n            Items.Add(tab2ViewModel);\n            Items.Add(tab3ViewModel);\n\n            ActivateItem (tab2ViewModel);\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
 public Tab2ViewModel()\n        {\n            DisplayName = "\xce\xa0\xcf\x81\xce\xbf\xcf\x83\xcf\x89\xcf\x80\xce\xb9\xce\xba\xcf\x8c";\n            IsEnabled = true;\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

在此输入图像描述

\n