[英]C# WPF MVVM TabItem HeaderTemplate won't work?
我當前正在使用帶有TabControl的應用程序,每個選項卡都有一個ViewModel,該ViewModel繼承自ITabViewModel
,它具有兩個屬性: HeaderText
和HeaderImage
。 我希望可以從每個ViewModel中進行設置。 因此,我嘗試使用HeaderTemplate
樣式,但這沒有用。 誰能告訴我如何使它起作用?
<TabControl>
<TabControl.Resources>
<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding HeaderImage}" Height="20" Margin="5, 0"/>
<TextBlock Text="{Binding HeaderText}"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem DataContext="{Binding ViewModelStart}">
</TabItem>
<TabItem DataContext="{Binding ViewModelStartupManager}">
</TabItem>
</TabControl>
只需在ItemTemplate部分下定義DataTemplate
<TabControl>
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
以此類推
ItemTemplate是用於格式化ItemsSource中的每個項目以創建標題的模板
我認為至少有兩個選擇適合您。
首先 (我假設ViewModelStart
和ViewModelStartupManager
是屬性):
<TabItem Header="{Binding ViewModelStart}">
<TabItem Header="{Binding ViewModelStartupManager}">
其次 ,使用ItemsSource
並在ViewModel的某些集合中定義選項卡。
視圖模型:
public ObservableCollection<ITabViewModel> Tabs{ get; set; }
XAML,刪除您的TabItem's
並將其添加到上面的屬性中。 還要向TabControl
添加以下屬性:
ItemsSource="{Binding Tabs}"
您需要為要應用的HeaderTemplate
設置TabItem
的Header
屬性:
<TabItem DataContext="{Binding ViewModelStart}" Header="{Binding}">
</TabItem>
<TabItem DataContext="{Binding ViewModelStartupManager}" Header="{Binding}">
</TabItem>
這有效:
<TabControl>
<TabControl.Resources>
<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding HeaderImage}" Height="20" Margin="5, 0"/>
<TextBlock Text="{Binding HeaderText}"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem DataContext="{Binding ViewModelStart}" Header="{Binding}">
</TabItem>
<TabItem DataContext="{Binding ViewModelStartupManager}" Header="{Binding}">
</TabItem>
</TabControl>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.