C#WPF MVVM TabItem HeaderTemplate不起作用?

时间:2017-04-01 19:30:03

标签: c# wpf mvvm

我目前正在使用 TabControl 开发应用程序,并且每个选项卡都有一个ViewModel,它继承自ITabViewModel,它有两个属性:HeaderText和{{1 }}。我希望从每个ViewModel设置这些。因此,我尝试使用HeaderImage样式,但这不起作用。谁能告诉我怎么能让它起作用呢?

HeaderTemplate

3 个答案:

答案 0 :(得分:0)

只需在ItemTemplate部分

下定义DataTemplate即可
 <TabControl>
    <TabControl.ItemTemplate>
        <DataTemplate>
             <StackPanel Orientation="Horizontal">

等等你的绑定

  

ItemTemplate是用于格式化ItemsSource中每个项目以创建标题

的模板

答案 1 :(得分:0)

我认为至少有两种选择。

首先(我认为ViewModelStartViewModelStartupManager是属性):

 <TabItem Header="{Binding ViewModelStart}">
 <TabItem Header="{Binding ViewModelStartupManager}">

第二次,使用ItemsSource并在ViewModel中的某个集合中定义标签。

视图模型:

public ObservableCollection<ITabViewModel> Tabs{ get; set; }

XAML,移除您的TabItem's并将其添加到上方的媒体资源中。同时将以下属性添加到TabControl

ItemsSource="{Binding Tabs}"

答案 2 :(得分:0)

您需要为Header设置TabItem的{​​{1}}属性才能应用:

HeaderTemplate

这有效:

<TabItem DataContext="{Binding ViewModelStart}" Header="{Binding}">

</TabItem>

<TabItem DataContext="{Binding ViewModelStartupManager}" Header="{Binding}">

</TabItem>