Wpf Caliburn micro和tabcontrol
我已经查看了大多数资源,但我可以找到一个好的解决方案。我有一个标签控件硬编码Wpf Caliburn micro和tabcontrol,wpf,mvvm,caliburn.micro,Wpf,Mvvm,Caliburn.micro,我已经查看了大多数资源,但我可以找到一个好的解决方案。我有一个标签控件硬编码 <TabControl TabStripPlacement="Left" Padding="0" Style="{DynamicResource SettingsTab}" ItemContainerStyle="{DynamicResource SettingsTabItemStyle}" Background="WhiteSmoke" > <TabItem Head
<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>
更新-重述问题这是我定制的选项卡控件。灰色文本是一个禁用的选项卡项,其行为类似于一个组。与常规设置、系统设置等类似,它具有导航菜单的作用。现在,我在每个选项卡项(不是禁用的选项卡项)上都有一个内容控件,并绑定我想要的视图模型。
但我不能将Conductor.Collection.OneActive与CM一起使用。
为什么?
我在CM示例和其他示例中看到了helloscreens示例,但这里的问题是,如果我通过绑定执行此操作,那么除了创建一个没有任何用途的虚拟视图模型之外,没有其他方法显示禁用的选项卡项。因此,我如何实现这一点 更新:来源 我有一个标签控件硬编码
<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>
这是要求吗
但我不能将Conductor.Collection.OneActive与CM一起使用。为什么?
我认为这不起作用的原因是使用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>
public Tab2ViewModel()
{
DisplayName = "Προσωπικό";
IsEnabled = true;
}
在视图模型的构造函数中启用或禁用选项卡项
<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>
public Tab2ViewModel()
{
DisplayName = "Προσωπικό";
IsEnabled = true;
}
未设置样式的结果是,第一个选项卡项被禁用,下两个选项卡项被启用
谢谢你的模型。查看和绑定。我的模型看起来是一样的。但问题是,通过使用Bind.Model,父对象是空的。有解决方法吗?好的,这很简单,但我目前有一些虚拟选项卡项被禁用。我的意思是,如果我想要一个分组菜单,这似乎是不可能的,因为我不知道如何填充我想要的选项卡控件。我看到了您的示例,但这没有帮助,因为如果您看到我的图像,它的某些项已启用=false(组),因此您希望基于什么启用/禁用某些选项卡项。我只想要一份这样的菜单。我不知道怎么用这个来指挥。问题是我希望这些东西用小写字母,唯一的解决办法是在每个选项卡项上都有一个绑定到viewModel类的contentcontrol。如果我在bitbucket上遵循您的解决方案,那么我只会得到带有白色大号字母的项目(因为它们只绑定到viewmodel),这是有意义的,让我创建另一个示例。关于这个: