[英]How to make label stretch on tabitem in 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标头,因此,如果用户单击标头的空白,则不会触发Click事件。
您可以看到,我希望红线现在没有空格。
我该如何解决?
谢谢
您可以做的最简单的事情是应用一些负的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"/>
如果没有这样的调整, 除非复制并修改TabControl
的标准模板, 否则就无法轻松更改硬编码的Margin
。
只需在TabItem
本身上触发MouseLeftButtonDown
事件即可,而不是在标签上触发...
<TabItem Name="prod" MouseLeftButtonDown="prod_MouseLeftButtonDown">
<TabItem.Header >
<Label Content="Prod" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</TabItem.Header>
</TabItem>
尝试将标签的height
和width
属性设置为Auto
<Label Height="Auto" Width="Auto" Content="Prod" MouseLeftButtonDown="prod_MouseLeftButtonDown" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
参见msdn :width属性
获取或设置控件的宽度。(继承自Control。)
和height属性
获取或设置控件的高度。(继承自Control。)
您可以访问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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.