如何在wpf上的tabitem上进行标签拉伸

时间:2015-10-07 15:15:58

标签: c# wpf

当我尝试在作为TabItem标头内容的Label上使用click事件时,我遇到了问题。

   <TabItem Name="prod" MouseLeftButtonDown="prod_MouseLeftButtonDown">
          <TabItem.Header >
                <Label Content="Prod" MouseLeftButtonDown="prod_MouseLeftButtonDown" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
          </TabItem.Header>

问题是Label不占用整个TabItem标题,因此如果用户点击Header的边距,则不会触发Click事件。

enter image description here

你可以看到我希望现在没有红线的空格。

我该如何解决这个问题?

谢谢

4 个答案:

答案 0 :(得分:3)

您可以做的最简单的事情是应用一些否定Margin并将其与Padding互补。 ContentPresenter始终具有 硬编码 边距。因此,一旦调整好Margin井(例如通过反复试验),这种方式应该始终如一。 Padding为正数且反函数为Margin。这是我尝试过的,它适用于我,你可以根据你的要求调整保证金:

<Label Content="Prod" MouseLeftButtonDown="prod_MouseLeftButtonDown" 
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
        Margin="-8,-3,-8,-3" Padding="8,3,8,3"/>

如果不进行这样的调整,您无法轻易更改硬编码Margin ,除非 复制并修改TabControl的标准模板。

答案 1 :(得分:1)

只需触发MouseLeftButtonDown本身的TabItem事件,而不是标签......

   <TabItem Name="prod" MouseLeftButtonDown="prod_MouseLeftButtonDown">
      <TabItem.Header >
            <Label Content="Prod"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
      </TabItem.Header>
 </TabItem>

答案 2 :(得分:0)

尝试将标签的heightwidth属性设置为Auto

 <Label Height="Auto" Width="Auto" Content="Prod" MouseLeftButtonDown="prod_MouseLeftButtonDown" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />

请参阅msdn:宽度属性

  
    

获取或设置控件的宽度。(从Control继承。)

  

和高度属性

  
    

获取或设置控件的高度。(从Control继承。)

  

答案 3 :(得分:0)

您可以访问ContentPresenter本身并相应地进行修改。您也可以将其用作所有TabItems的样式。

    <TabControl Width="500">
        <TabControl.Items>
            <TabItem>
                <TabItem.Header>
                    Prod
                </TabItem.Header>
                <TabItem.HeaderTemplate>
                    <DataTemplate>
                        <ContentPresenter Margin="-8, -3, -8, 0" >
                            <ContentPresenter.Content>
                                <TextBlock MouseLeftButtonDown="prod_MouseLeftButtonDown" Text="{TemplateBinding Content}"/>
                            </ContentPresenter.Content>
                        </ContentPresenter>
                    </DataTemplate>
                </TabItem.HeaderTemplate>
            </TabItem>
        </TabControl.Items>
    </TabControl>