Wpf 具有预定义模板的动态选项卡项

Wpf 具有预定义模板的动态选项卡项,wpf,templates,dynamic,tabcontrol,tabitem,Wpf,Templates,Dynamic,Tabcontrol,Tabitem,我有一个动态创建选项卡的WPF应用程序,现在我希望每个选项卡项必须包含expander和Usercontrol,并且在运行时设置expander和Usercontrol的datacontext,因此如果我在样式中定义tabitem的模板,我觉得为Expender和usercontrol设置datacontext很困难。为了使校长职位 XAML代码 <TabControl Name="tabDynamic" ItemsSource="{Binding}" SelectionChanged="

我有一个动态创建选项卡的WPF应用程序,现在我希望每个选项卡项必须包含expander和Usercontrol,并且在运行时设置expander和Usercontrol的datacontext,因此如果我在样式中定义tabitem的模板,我觉得为Expender和usercontrol设置datacontext很困难。为了使校长职位

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>

现在,我需要使用expander和Usercontrol对内容进行模板化,我该如何实现?

您只需将
内容模板添加到
TabControl
(或者
TabItem
,如果您愿意的话)。我会在XAML中完成这一切:

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

因为这是一个模板,
DataContext
将是要设置为
选项卡控件的内容的
缩略图图像
对象


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

Thanx以获得您的回复,这不是我需要的。。我找到了解决方案,我在usercontrol中添加了扩展程序,bcz扩展程序有一些复杂的逻辑,然后我在tab项中添加了usercontrol。
<TabControl>
  <TabControl.ContentTemplate>
    <DataTemplate>
      <Expander>
        <my:UserControl />
      </Expander>
    </DataTemplate>
  </TabControl.ContentTemplate>
</TabControl>