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>

close TabItem Action がテンプレート内で適切なコードを介して設定されている場所。しかし、テンプレートから離れた場所にあるカスタム イメージ セットを保持できる 2 番目のボタンをタブに含めたいとしたらどうでしょう。これを行うにはどうすればよいですか? また、テンプレートの外でこのボタンのクリックを処理するにはどうすればよいですか? これを行うことができるの例TabItemはVS2012です...

TabItemVS2012

御時間ありがとうございます。

4

1 に答える 1

1

キラーカム!

私はMenuItemDataTemplate で同じことを経験しました。

私がしたことは、タイプ Button のSetter Property=Commandmy 内に追加することでした。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");
    }
}

私のビューでは、次のように必要なコマンド (ICommand) を設定できました。

ViewModel.MenuSubItem.Add(new MenuViewModel { Texto = "xxxxx", Comando = WhateverCommand });

お役に立てば幸いです!

于 2013-10-02T11:48:34.433 に答える