2015-08-02 2 views
0

Я хочу получить эффект слайда сетки содержимого в элементе табуляции при нажатии на вкладку.WPF Slide Content TabItem

это, например, мой XAML

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Left" > 

     <TabControl Name="_menuTabControl" TabStripPlacement="Left" > 
      <TabItem Name="MainTab" Header="Main" > 


      <Grid> 

       <TextBlock  FontFamily="pack://application:,,,/Resources/#Sansation" FontSize="36" Text="testing right now" /> 




      </Grid> 
     </TabItem> 

     <TabItem Name="_tabItems1" Header="Autologin" > 


     </TabItem> 
     <TabItem Name="_tabItedms1" Header="Autologin" > 


     </TabItem> 
    </TabControl> 




    </StackPanel> 

добавлены некоторые эффекты стиль

 <Setter Property="Foreground" Value="White" /> 
     <Setter Property="FontSize" Value="15" /> 
     <Setter Property="Width" Value="160"/> 

     <Setter Property="SnapsToDevicePixels" Value="True" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid> 
         <Border Name="border1" 
         Background="Transparent" 
         CornerRadius="3,3,3,3" 
         Cursor="Hand" 
         BorderThickness="0,0,0,1" 
         Panel.ZIndex="50" 

         Margin="-7,2,0,0" 
          > 

          <ContentPresenter x:Name="ContentSite"    
          VerticalAlignment="Center" 
          HorizontalAlignment="Left" 
          ContentSource="Header" 
          Margin="10,10,10,10"/> 
         </Border> 
        </Grid> 


        <ControlTemplate.Triggers> 


         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Panel.ZIndex" Value="100" /> 
          <Setter Property="FontSize" Value="17"/> 
          <Setter Property="Margin" Value="0,0,-2,0" /> 
          <Setter Property="Foreground" Value="#cfba6b"/> 

          <Setter TargetName="border1" 
          Property="BorderBrush" 
          Value="{StaticResource glass}" /> 

          <Setter TargetName="border1" 
          Property="Background" 
          Value="{StaticResource glassef }" /> 

         </Trigger> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter TargetName="border1" 
          Property="Background" 
          Value="{StaticResource glassef}" /> 

          <Setter TargetName="border1" 
          Property="BorderBrush" 
          Value="{StaticResource glass}" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

` я хотел бы, чтобы сдвинуть содержимое вкладки элемента. это можно сделать только в чистом xaml? или я должен использовать C# тоже? любая помощь будет оценена.

ответ

0

Вы должны изменить маржу на IsSelected в

<Trigger Property="IsSelected" Value="True"> 
... 
    <Setter Property="Margin" Value="10,0,0,0" /> 

, и если вы хотите, чтобы эффект слайд, вы можете применить анимацию с помощью раскадровки

<EventTrigger RoutedEvent="Grid.Loaded"> 
           <BeginStoryboard> 
            <Storyboard> 
             <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" BeginTime="00:00:00"> 
              <SplineThicknessKeyFrame KeyTime="00:00:00" Value="0,0,0,0" /> 
              <SplineThicknessKeyFrame KeyTime="00:00:02" Value="10,0,0,0" /> 
             </ThicknessAnimationUsingKeyFrames> 
            </Storyboard> 
           </BeginStoryboard> 
          </EventTrigger> 
+0

ждать, куда его положить? istead свойства setter? –

+0

Вы можете поместить его в Window.Resources или Tabcontrol.Resources или TabItem.Resources – Akansha

+0

Большое вам спасибо, но я получаю исключение 'Не удается разрешить все ссылки на свойства в пути свойств Content.Opacity. Убедитесь, что соответствующие объекты поддерживают свойства. «Вы знаете, почему это так? @Akansh –