WPF HandyControl TabControl下拉内容自定义问题
HandyControl TabControl 自定义标签溢出下拉菜单内容
HandyControl的TabControl里,标签过多溢出时的下拉菜单内容,得用DropDownItemTemplate属性来定义——你之前用的ItemTemplate是控制顶部显示的标签样式,DropDownContentTemplate并不是干这个的,所以没效果。
直接给你修改后的完整代码,加上DropDownItemTemplate就能自定义下拉菜单里的内容:
<hc:TabControl IsAnimationEnabled="False" IsDraggable="False" IsTabFillEnabled="False" ItemsSource="{Binding DataSaves, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedItem="{Binding SelectedDataSave, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"> <!-- 顶部显示的标签模板,保持你原来的设置 --> <hc:TabControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Margin="6,0,0,0" VerticalAlignment="Center" Text="{Binding DisplayName}" /> </StackPanel> </DataTemplate> </hc:TabControl.ItemTemplate> <!-- 溢出下拉菜单的项模板,这里自定义内容 --> <hc:TabControl.DropDownItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Padding="8,4"> <!-- 可以自由添加元素,比如显示DisplayName加ID --> <TextBlock VerticalAlignment="Center" Text="{Binding DisplayName}" /> <TextBlock Margin="8,0,0,0" VerticalAlignment="Center" Foreground="#666" Text="{Binding Id}" /> </StackPanel> </DataTemplate> </hc:TabControl.DropDownItemTemplate> <hc:TabControl.ContentTemplate> <DataTemplate> <ContentPresenter Content="{Binding UserControl, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> </DataTemplate> </hc:TabControl.ContentTemplate> </hc:TabControl>
如果还需要调整下拉菜单的整体样式(比如宽度、背景),可以再加个DropDownStyle:
<hc:TabControl.DropDownStyle> <Style TargetType="hc:DropDownMenu"> <Setter Property="MinWidth" Value="200" /> <Setter Property="Background" Value="#F5F5F5" /> </Style> </hc:TabControl.DropDownStyle>
这样就能完全按照你的需求自定义下拉菜单里的内容了。
内容的提问来源于stack exchange,提问作者yellowjia
相关产品推荐
相关产品推荐

