gpt4 book ai didi

wpf - 带有预定义模板的动态 Tabitem

转载 作者:行者123 更新时间:2023-12-02 03:45:42 25 4
gpt4 key购买 nike

我有一个动态创建选项卡的 WPF 应用程序,现在我希望每个选项卡项都必须包含扩展器和用户控件,并且在运行时为扩展器和用户控件设置数据上下文 strong>,所以如果我在Style中定义tabitem的模板,我觉得为expnder和usercontrol设置datacontext会很困难。为了 HeaderTemplate

XAML 代码

<TabControl Name="tabDynamic" ItemsSource="{Binding}" SelectionChanged="tabDynamic_SelectionChanged" FontSize="15" FontFamily="Verdana"  FontWeight="Normal"    FontStretch="Expanded" >
<TabControl.Resources>
<DataTemplate x:Key="TabHeader" DataType="TabItem">
<DockPanel>
<Button Name="btnDelete" DockPanel.Dock="Right" Margin="150,0,0,0" Content="X" Foreground="WhiteSmoke" FontSize="10"
FontWeight="Bold" Padding="0" Click="btnDelete_Click" Height="15"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Name}" >
<Button.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="#FF9D4040" Offset="0" />
<GradientStop Color="#FFB11212" Offset="1" />
</LinearGradientBrush>
</Button.Background>
<!--<Image Source="/delete.gif" Height="11" Width="11"></Image>-->
</Button>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=TabItem }, Path=Header}" />
</DockPanel>
</DataTemplate>
</TabControl.Resources>
</TabControl>

在代码隐藏中添加内容,

     Private Function AddTabItem() As TabItem
Dim count As Integer = _tabItems.Count

Dim tab As New TabItem()

tab.Header = String.Format("tab{0}", count)
tab.Name = String.Format("tab{0}", count)
tab.HeaderTemplate = TryCast(tabDynamic.FindResource("TabHeader"), DataTemplate)

_tabItems.Insert(count - 1, tab)

obj = New ThumbnailImages

' add controls to tab item,
If ImageCollection.Count > 0 Then
obj.SetDataContext(ImageCollection)
tab.Content = obj
End If
Return tab
End Function

现在我需要使用扩展器和用户控件对内容进行模板化,我该如何实现?

最佳答案

你只需要添加一个ContentTemplateTabControl (或 TabItem 如果您愿意)。我会在 XAML 中完成这一切:

<TabControl>
<TabControl.ContentTemplate>
<DataTemplate>
<Expander>
<my:UserControl />
</Expander>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>

因为这是一个模板,所以 DataContext将是 ThumbnailImages您设置为 TabControl 内容的对象.

我要提到的另一件事是您可以设置 HeaderTemplate TabControl 的属性(property)所以你不必在代码中访问它。如果您正在处理标题和/或内容的多个模板,请查看 DataTemplateSelector .

关于wpf - 带有预定义模板的动态 Tabitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17320025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com