WPF TabControl数据绑定

mac*_*nir 27 data-binding wpf tabcontrol

我正在尝试构建一个包含TabControl和TextBlock的WPF用户界面.

我想将这两个控件绑定到以下类的底层实例集合:

class PageModel
{
  public string Title {get;set;}
  public string TabCaption {get;set;}
  public FrameworkElement TabContent {get;set}
}
Run Code Online (Sandbox Code Playgroud)

选项卡控件应显示每个PageModel的选项卡.

  • 每个标签的标题都应显示TabCaption属性
  • 每个标签的内容应该是TabContent属性.

TextBlock应显示当前所选选项卡的标题.

我怎样才能达到这个效果?

Ken*_*art 63

<TabControl x:Name="_tabControl" ItemsSource="{Binding PageModels}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding TabCaption}"/>
            <Setter Property="Content" Value="{Binding TabContent}"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>
<TextBlock Text="{Binding SelectedItem.Title, ElementName=_tabControl}"/>
Run Code Online (Sandbox Code Playgroud)


sfa*_*ust 7

我还在这里使用ItemTemplate和ContentTemplate 找到了另一个解决方案.

对于像我这样的任何WPF新手,经过一些令人头疼和沮丧后,我意识到页面模型的集合需要是一个ObservableCollection<PageModel>而不是一个List<PageModel>或任何更改列表不会被标签反映(即你不能添加或删除选项卡,如果它是一个列表).