如何显示选项卡的视图?



在我的主视图模型中有一个选项卡集合。

class SettingTab : ISettingTab
{
public string Name { get; }
readonly UIInfo UIInfo;
public Type TypeView => UIInfo.TypeView;
public Func<IViewModel> ViewModel => UIInfo.ViewModel;
#endregion
#region Constructor
public SettingTab(string Name, UIInfo UIInfo)
{
this.Name = Name;
this.UIInfo = UIInfo;
}
}

}

如何在选择特定选项卡时显示特定视图?你能告诉我这里需要补充什么吗?

<TabControl ItemsSource="{Binding Tabs}"
TabStripPlacement="Left"
SelectedIndex="{Binding SelectedIndex}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TabControl>

TabControl显示TabItem元素的列表,标签头,以及引用所选项目的TabItem.Content作为实际标签内容的TabControl.SelectedContent
默认情况下,TabItem.ContentTabItemDataContext-在您的情况下,它是Tab数据模型。
这意味着默认情况下,TabControl.ItemtemplateDataTemplateTabControl.ContentTemplate共享同一个DataContext
如果你想改变这个默认行为,例如,在DataContext上设置一个特定的属性作为TabControl.SelectedContent,你必须在TabControl.ItemContainersStyle中指定这个绑定。

例如,如果每个Tab数据项都有一个Tab.ViewModel属性,您希望将其显示为TabControl.SelectedContent,那么将TabItem.Content属性绑定到这个Tab.ViewModel数据属性。此外,您必须为Tab.ViewModel属性的数据类型定义TabControl.ContentTemplate,以定义TabControl.SelectedContent的布局:

<TabControl ItemsSource="{Binding Tabs}">
<TabControl.Resources>
<!-- Implicit DataTemplate for TabControl's content -->
<DataTemplate DataType="{x:Type TypeOfTheViewModelPropertyOnTheTabType}">
...
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<!-- Make the property value of 'Tab.ViewModel' the DataContext of the content -->
<Setter Property="Content" Value="{Binding ViewModel}" />
</Style>
</TabControl.ItemContainerStyle>
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type Tab}">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>

最新更新