【发布时间】:2014-04-04 00:06:37
【问题描述】:
单击 WPF TabItem Header 时,我需要执行命令。
由于 Button 有一个命令,我想我会将 Button 放在 TabItem Header 中。
我希望 Button 占据 TabItem Header 的全部内容,但无论我尝试了什么,我都无法让它这样做。
这是我的简单 XAML 窗口:
TestWindow.xaml
<Window x:Class="ActivePDFMonitor.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TestWindow" Height="300" Width="300">
<Grid>
<TabControl>
<TabItem Header="Tab 1">
<TextBlock Text="Hello, world"/>
</TabItem>
<TabItem>
<TabItem.HeaderTemplate>
<DataTemplate>
<Button Content="+" Background="Green"></Button>
</DataTemplate>
</TabItem.HeaderTemplate>
<TextBlock Text="Tab 2 contents"/>
</TabItem>
</TabControl>
</Grid>
</Window>
这是我尝试过但没有奏效的方法
设置按钮属性
HorizontalAlignment="Stretch",VerticalAlignment="Stretch",HorizontalContentAlignment="Stretch",VerticalContentAlignment="Stretch"- 没有视觉效果将其他面板(WrapPanel、DockPanel)包裹在 Button 周围 - 没有视觉效果
在
<Viewbox>中包裹按钮 - 出于某种原因,这使得按钮占据了整个窗口。
我想我不需要按钮,如果有某种方法可以将命令附加到整个 TabItem 标题(这将是一个可能的解决方案)。
但是,我绝对不想使用 TabControl 的 SelectionChanged 来触发添加新选项卡(沿着这条路走下去,发现它很脆弱,因为 SelectionChanged 是不可预测的)。
我一直在努力解决这个问题,看起来应该很简单。任何想法或见解将不胜感激。
【问题讨论】: