2

我为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 操作的位置。但是,如果我想在选项卡上包含第二个按钮,该按钮可以将自定义图像集远离模板。我怎么能做到这一点,我将如何处理在模板之外单击此按钮?TabItem可以做到这一点的一个例子是VS2012 ...

TabItemVS2012

谢谢你的时间。

4

1 回答 1

1

杀手相机!

我在MenuItemDataTemplate 上也经历过同样的事情。

我所做的是Setter Property=Command在我的内部添加一个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 });

希望我有帮助!

于 2013-10-02T11:48:34.433 回答