WPF TabControl数据绑定

时间:2009-03-26 14:39:17

标签: wpf data-binding tabcontrol

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

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

class PageModel
{
  public string Title {get;set;}
  public string TabCaption {get;set;}
  public FrameworkElement TabContent {get;set}
}

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

  • 每个标签的标题都应显示TabCaption属性
  • 每个标签的内容应为TabContent属性。

TextBlock应显示当前所选标签的标题。

如何实现这一结果?

2 个答案:

答案 0 :(得分: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}"/>

答案 1 :(得分:7)

我还使用ItemTemplate和ContentTemplate找到了这个here的另一个解决方案。

对于像我这样的任何WPF新手,在经历了一些令人头疼和沮丧之后,我意识到页面模型的集合需要是ObservableCollection<PageModel>而不是List<PageModel>,否则对列表的任何更改都不会是由标签反映(即如果是列表,则无法添加或删除标签)。