我为TabControl
创建了一个新样式。在TabItem
我有一个关闭按钮。现在,我希望用户能够单击该关闭按钮以关闭活动选项卡。
<Style x:Key="StudioTabControl" TargetType="{x:Type TabControl}">
<Style.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid Height="20"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="35"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0"
Margin="10,0,10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ContentSource="Header" />
<Button Grid.Column="1"
Width="15"
Height="15"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Command= // CLOSE COMMAND OPERATION HERE.
DockPanel.Dock="Right">
...
我知道我可以做类似
的事情<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<Actions:CloseTabItemAction TabItem="{Binding RelativeSource={RelativeSource AncestorType=TabItem}}"
TabControl="{Binding RelativeSource={RelativeSource AncestorType=TabControl}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
在模板中设置关闭的TabItem Action并通过适当的代码。但是,如果我想在选项卡上包含第二个按钮,该按钮可以从模板中保留自定义图像集。 我怎么能这样做?如何在模板外部处理此按钮的点击?可以执行此操作的TabItem
的示例是VS2012 ......
感谢您的时间。
答案 0 :(得分:1)
Killercam!
我在DataTemplate上使用MenuItem
进行了同样的操作。
我所做的是在Setter Property=Command
内为类型Button添加Style
。
这是我的代码:
<DataTemplate x:Key="Whatever">
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Comando}" />
<Setter Property="CommandParameter" Value="{Binding Texto}"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<StackPanel Orientation="Horizontal">
<!--<Image Source="{Binding Imagem}" />-->
<AccessText Text="{Binding Texto}" />
</StackPanel>
</DataTemplate>
记住{Binding Comando}
是我的ViewModel的ICommnd属性,如下所示:
private ICommand _Comando;
public ICommand Comando
{
get
{
return _Comando;
}
set
{
_Comando = value;
OnPropertyChanged("Comando");
}
}
在我的视图中,我可以设置我想要的任何Comando(ICommand):
ViewModel.MenuSubItem.Add(new MenuViewModel { Texto = "xxxxx", Comando = WhateverCommand });
希望我有所帮助!