我查看了大部分资源但我能找到一个好的解决方案。我有一个标签控件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>
更新 - 重述问题
这是我的自定义选项卡控件。灰色文本是一个禁用的选项卡项,它就像一个组。与常规设置,系统设置等一样。因此它具有导航菜单的作用。我可以在每个tabitem(不是禁用的)上有一个内容控件,并绑定我想要的视图模型
但我不能使用Conductor.Collection.OneActive和CM
为什么呢?
我已经看过来自CM样本和其他样本的helloscreens示例,但这里的问题是,如果我通过绑定这样做,那么除了创建一个没有用处的虚拟视图模型之外,没有办法显示禁用的tabitems。所以我怎样才能实现这个 ?
答案 0 :(得分:4)
更新:来源here
我有一个标签控件HARD编码。
这是一项要求吗?
但是我不能在CM上使用Conductor.Collection.OneActive。为什么呢?
我认为这不起作用的原因是使用Conductor.Collection.OneActive
您需要将ItemsSource
绑定到Items集合。如果您要绑定ItemsSource
,则无法在XAML
中描述标签项。
我创建了一个不涉及描述xaml中标签项的解决方案。
关键部分:
在ShellView
中,TabControl
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;
}
未样式化的结果是第一个标签项被禁用,接下来的两个标签项被启用。