我有一个自定义的TabControl ControlTemplate,为TabControl的头部添加了按钮。目前这个ControlTemplate没有命名部分,因为按钮命令是在ControlTemplate的XAML中绑定的,不需要在ControlTemplate外部公开。
对于按钮来说,这很好,但如果我想向TabItemHeaders的左(或右)侧添加内容,并将其绑定到ControlTemplate以外,使我的TabControl更加灵活呢?
我的想法是对TabControl进行子类化,并在ControlTemplate中添加两个命名部分,并将这些作为新控件的属性公开; CustomTabControl.LeftContentArea和CustomTabControl.RightContentArea。每个命名部分都是一个ContentPresenter,每个ContentPresenter的Content属性均由上述命名的属性公开。
然而,当我尝试这样做时,我无法将内容放置在左侧和右侧内容区域中。
编辑:为了清楚起见,我包含了一张图片。红色矩形显示了我想要放置额外内容的位置。
更新:下面是我迄今为止取得的进展截图,希望这能更好地解释我的问题。
屏幕截图显示了我的自定义Tab Control,其中有两个空选项卡和三个按钮,这些按钮当前位于TabItem头区域的右侧。这些按钮当前在TabControls的自定义ControlTemplate中定义,即Grid中有一个ColumnDefinition,其中包含一个StackPanel,用于承载3个按钮。
我正在寻找一种方式,允许选项卡控件的消费者决定将什么内容放在选项卡旁边的区域。例如,用户应该能够执行以下操作:
对于按钮来说,这很好,但如果我想向TabItemHeaders的左(或右)侧添加内容,并将其绑定到ControlTemplate以外,使我的TabControl更加灵活呢?
我的想法是对TabControl进行子类化,并在ControlTemplate中添加两个命名部分,并将这些作为新控件的属性公开; CustomTabControl.LeftContentArea和CustomTabControl.RightContentArea。每个命名部分都是一个ContentPresenter,每个ContentPresenter的Content属性均由上述命名的属性公开。
然而,当我尝试这样做时,我无法将内容放置在左侧和右侧内容区域中。
编辑:为了清楚起见,我包含了一张图片。红色矩形显示了我想要放置额外内容的位置。
更新:下面是我迄今为止取得的进展截图,希望这能更好地解释我的问题。
屏幕截图显示了我的自定义Tab Control,其中有两个空选项卡和三个按钮,这些按钮当前位于TabItem头区域的右侧。这些按钮当前在TabControls的自定义ControlTemplate中定义,即Grid中有一个ColumnDefinition,其中包含一个StackPanel,用于承载3个按钮。
我正在寻找一种方式,允许选项卡控件的消费者决定将什么内容放在选项卡旁边的区域。例如,用户应该能够执行以下操作:
<local:CustomTabControl>
<local:CustomTabControl.RightContentArea>
<!-- This can be changed to ANY content that the user wants -->
<StackPanel Orientation="Horizontal">
<Button Content="Test" />
<Button Content="Test" />
<Button Content="Test" />
</StackPanel>
</local:CustomTabControl.RightContentArea>
<!-- TabItems are added as normal -->
<TabItem Header="Tab One" />
<TabItem Header="Tab Two" />
</local:CustomTabControl>