我的非数据绑定TabControl 看起来不错:
alt text http://tanguay.info/web/external/tabControlPlain.png
<TabControl Width="225" Height="150">
<TabItem Header="One">
<TextBlock Margin="10" Text="This is the text block"/>
</TabItem>
<TabItem Header="Two"/>
<TabItem Header="Three"/>
<TabItem Header="Four"/>
</TabControl>
但是我的数据绑定TabControl 看起来像这样:
alt text http://tanguay.info/web/external/tabBound.png
<Window.Resources>
<DataTemplate x:Key="TheTabControl">
<TabItem Header="{Binding Title}">
<TextBlock Text="{Binding Description}" Margin="10"/>
</TabItem>
</DataTemplate>
</Window.Resources>
<TabControl Width="225" Height="150" ItemsSource="{Binding AreaNames}"
ItemTemplate="{StaticResource TheTabControl}">
</TabControl>
public MainViewModel()
{
AreaNames.Add(new Area { Title = "Area1", Description = "this is the description for area 1" });
AreaNames.Add(new Area { Title = "Area2", Description = "this is the description for area 2" });
AreaNames.Add(new Area { Title = "Area3", Description = "this is the description for area 3" });
}
#region ViewModelProperty: AreaNames
private ObservableCollection<Area> _areaNames = new ObservableCollection<Area>();
public ObservableCollection<Area> AreaNames
{
get
{
return _areaNames;
}
set
{
_areaNames = value;
OnPropertyChanged("AreaNames");
}
}
#endregion
我需要更改什么,以便我的数据绑定tabcontrol看起来像我的常规非数据绑定tabcontrol?
答案 0 :(得分:4)
TabControl使用两个不同的模板来定义其结构。 ItemTemplate用于标题(“标签”),ContentTemplate用于每个标签下显示的内容。
这个XAML看起来更像是你的第一个截图:
<Window.Resources>
<DataTemplate x:Key="TabHeaderTemplate">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
<DataTemplate x:Key="TabItemTemplate">
<TextBlock Text="{Binding Description}" Margin="10"/>
</DataTemplate>
</Window.Resources>
<TabControl Width="225" Height="150"
ItemsSource="{Binding AreaNames}"
ContentTemplate="{StaticResource TabItemTemplate}"
ItemTemplate="{StaticResource TabHeaderTemplate}" />
答案 1 :(得分:2)
我认为这里发生的是整个DataTemplate被设置为TabItem的Header。看一下这个链接,它给TabControl的Header和ContentTemplate提供了一个例子:http://psiman.wordpress.com/2006/12/07/databound-master-detail-tabcontrol/