溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C# 中怎么利用WPF自定義菜單切換動(dòng)畫(huà)

發(fā)布時(shí)間:2021-07-07 15:10:13 來(lái)源:億速云 閱讀:218 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)C# 中怎么利用WPF自定義菜單切換動(dòng)畫(huà),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

 添加Nuget庫(kù)

使用 .Net Core 3.1 創(chuàng)建名為“CustomMenu”的WPF解決方案,添加兩個(gè)Nuget庫(kù):MaterialDesignThemes和MaterialDesignColors。

C# 中怎么利用WPF自定義菜單切換動(dòng)畫(huà)  
MaterialDesign控件庫(kù) 

3.2 工程結(jié)構(gòu)

只修改了App.xaml(添加MD控件樣式)和MainWindow.xaml(主窗口實(shí)現(xiàn)效果)。

3.3 App.xaml引入MD控件樣式

<Application x:Class="CustomMenu.App"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:CustomMenu"
            StartupUri="MainWindow.xaml">
   <Application.Resources>
       <ResourceDictionary>
           <ResourceDictionary.MergedDictionaries>
               <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" />
               <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
           </ResourceDictionary.MergedDictionaries>
           <!--PRIMARY-->
           <SolidColorBrush x:Key="PrimaryHueLightBrush" Color="#349FDA"/>
           <SolidColorBrush x:Key="PrimaryHueLightForegroundBrush" Color="#FF333333"/>
           <SolidColorBrush x:Key="PrimaryHueMidBrush" Color="#0288d1"/>
           <SolidColorBrush x:Key="PrimaryHueMidForegroundBrush" Color="#FFDDDDDD"/>
           <SolidColorBrush x:Key="PrimaryHueDarkBrush" Color="#015f92"/>
           <SolidColorBrush x:Key="PrimaryHueDarkForegroundBrush" Color="#FFFFFF"/>
           <!--ACCENT-->
           <SolidColorBrush x:Key="SecondaryAccentBrush" Color="#FF50F350"/>
           <SolidColorBrush x:Key="SecondaryAccentForegroundBrush" Color="#FFFFFF"/>
       </ResourceDictionary>
   </Application.Resources>
</Application>


3.4 主窗體 MainWindow.xaml

添加菜單、設(shè)置菜單項(xiàng)切換動(dòng)畫(huà)等:

<Window x:Class="CustomMenu.MainWindow"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       xmlns:local="clr-namespace:CustomMenu"
       xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
       mc:Ignorable="d"
       Title="MainWindow" Height="600" Width="1080" Background="#FF292929" ResizeMode="NoResize" WindowStyle="None"
       WindowStartupLocation="CenterScreen">

   <Window.Resources>
       <Storyboard x:Key="Move0">
           <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                          Storyboard.TargetName="ellipse">
               <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0">
                   <EasingDoubleKeyFrame.EasingFunction>
                       <BackEase EasingMode="EaseInOut"/>
                   </EasingDoubleKeyFrame.EasingFunction>
               </EasingDoubleKeyFrame>
           </DoubleAnimationUsingKeyFrames>
       </Storyboard>

       <Storyboard x:Key="Move1">
           <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                          Storyboard.TargetName="ellipse">
               <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="40">
                   <EasingDoubleKeyFrame.EasingFunction>
                       <BackEase EasingMode="EaseInOut"/>
                   </EasingDoubleKeyFrame.EasingFunction>
               </EasingDoubleKeyFrame>
           </DoubleAnimationUsingKeyFrames>
       </Storyboard>

       <Storyboard x:Key="Move2">
           <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"
                                          Storyboard.TargetName="ellipse">
               <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="80">
                   <EasingDoubleKeyFrame.EasingFunction>
                       <BackEase EasingMode="EaseInOut"/>
                   </EasingDoubleKeyFrame.EasingFunction>
               </EasingDoubleKeyFrame>
           </DoubleAnimationUsingKeyFrames>
       </Storyboard>
   </Window.Resources>

   <Window.Triggers>
       <EventTrigger RoutedEvent="ListBoxItem.Selected" SourceName="item0">
           <BeginStoryboard x:Name="Move0_BeginStoryboard" Storyboard="{StaticResource Move0}"/>
       </EventTrigger>
       <EventTrigger RoutedEvent="ListBoxItem.Selected" SourceName="item1">
           <BeginStoryboard x:Name="Move1_BeginStoryboard" Storyboard="{StaticResource Move1}"/>
       </EventTrigger>
       <EventTrigger RoutedEvent="ListBoxItem.Selected" SourceName="item2">
           <BeginStoryboard x:Name="Move2_BeginStoryboard" Storyboard="{StaticResource Move2}"/>
       </EventTrigger>
   </Window.Triggers>
   
   <Grid>
       <Grid.RowDefinitions>
           <RowDefinition Height="40"/>
           <RowDefinition Height="*"/>
       </Grid.RowDefinitions>
       <Border Grid.Row="0" BorderBrush="{StaticResource SecondaryAccentBrush}" BorderThickness="0 0 0 1">
           <StackPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal">
               <Button Style="{StaticResource MaterialDesignFlatButton}">
                   <materialDesign:PackIcon Kind="Minus"/>
               </Button>
               <Button Style="{StaticResource MaterialDesignFlatButton}">
                   <materialDesign:PackIcon Kind="Close"/>
               </Button>
           </StackPanel>
       </Border>

       <Grid Grid.Row="1">
           <Grid.ColumnDefinitions>
               <ColumnDefinition Width="200"/>
               <ColumnDefinition Width="*"/>
           </Grid.ColumnDefinitions>

           <ListView Width="200" HorizontalAlignment="Left">
               <ListViewItem x:Name="item0" Content="首頁(yè)" Height="40"/>
               <ListViewItem x:Name="item1" Content="瀏覽" Height="40"/>
               <ListViewItem x:Name="item2" Content="視頻" Height="40"/>
           </ListView>

           <Grid Grid.ColumnSpan="2" Width="5" Margin="195 0" HorizontalAlignment="Left">
               <Rectangle Fill="{StaticResource SecondaryAccentBrush}" Width="2" HorizontalAlignment="Right"/>
               <Ellipse x:Name="ellipse" Width="10" Height="10" VerticalAlignment="Top" Fill="{StaticResource SecondaryAccentBrush}" Margin="0 15"
                        RenderTransformOrigin="0.5 0.5">
                   <Ellipse.RenderTransform>
                       <TransformGroup>
                           <ScaleTransform/>
                           <SkewTransform/>
                           <RotateTransform/>
                           <TranslateTransform/>
                       </TransformGroup>
                   </Ellipse.RenderTransform>
               </Ellipse>
           </Grid>
       </Grid>
   </Grid>
</Window>

以上就是C# 中怎么利用WPF自定義菜單切換動(dòng)畫(huà),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI