我想制作包含TabItems的TabControl。在TabItem中,我会有StackPanel包含各种控件(ListBox,TextBox,Grid等)。如何制作每个TabItem的模板并制作其中的多个?
例如,假设我想制作包含食物类别(肉类,水果,蔬菜等)标签的TabControl。我可以通过使用Name和Header制作TabItem来单独制作它们。但相反,我想让一个像跟随并使用它作为模板,因为选项卡可以增加。
<TabControl x:Name="TabControl" Margin="3,3,3,3" MinWidth="200">
<TabItem Name="FoodCategory1">
<!-- Contents of this does not really matter but its same thing for each "FoodCategory" -->
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="20"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox x:Name="InputBox" Grid.Column="0" Margin="5,5,5,5"></TextBox>
<Button x:Name="AddButton" Grid.Column="1" HorizontalAlignment="Right" Margin="0,0,5,0" Width="20" Height="20"></Button>
<Button x:Name="RemoveButton" Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,5,0" Width="20" Height="20"></Button>
</Grid>
<ListBox x:Name="FoodList" Margin="3,3,3,3" MinHeight="40"></ListBox>
</StackPanel>
<!-- example end -->
</TabItem>
</TabControl>
当然,从我的代码回来,我想通过FoodCategoryX.InputBox访问每个tabitems内容,依此类推。 我该怎么做呢?
任何帮助都将不胜感激。
谢谢。
答案 0 :(得分:1)
根据您编写的内容,您可以编写UserControl或CustomControl作为容器,并提供您所追求的视觉效果。这两个中最简单的可能就是UserControl。然后,您将使用控件的实例填充每个TabItem,这使您能够按名称寻址TabItems。
关于通过名称解决各种子控件的其他问题,这是可以实现的,但更强大的方法是通过公开依赖属性来使用WPF的绑定功能。编写UserControl是一项直接的工作,并且有一个工作样本here