瀏覽代碼

:iphone: :mag: 优化搜索功能/优化动画

liufei 3 年之前
父節點
當前提交
0aa7969e4a

+ 4 - 0
App.config

@@ -46,6 +46,10 @@
         <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
         <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
       </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.1.1.0" newVersion="2.1.1.0" />
+      </dependentAssembly>
     </assemblyBinding>
   </runtime>
   <appSettings>

+ 2 - 0
App.xaml

@@ -13,6 +13,8 @@
                 <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
                 <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
                 <ResourceDictionary Source="/GeekDesk;component/Resource/Dictionary/CommonStyle.xaml"/>
+                <ResourceDictionary Source="pack://application:,,,/XamlFlair.WPF;component/DefaultAnimations.xaml"/>
+                <ResourceDictionary Source="/GeekDesk;component/Resource/Dictionary/XamlFlairSettings.xaml"/>
             </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
   </Application.Resources>

+ 1 - 1
Control/UserControls/PannelCard/LeftCardControl.xaml

@@ -114,7 +114,7 @@
                >
             <Grid Background="Transparent">
                 <Border Style="{StaticResource MyPoptipStyle}">
-                    <TextBlock Name="MyPoptipContent" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="Test" FontSize="19"/>
+                    <TextBlock Name="MyPoptipContent" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="Test" FontSize="14"/>
                 </Border>
             </Grid>
         </Popup>

+ 2 - 2
Control/UserControls/PannelCard/LeftCardControl.xaml.cs

@@ -313,7 +313,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
         {
             if (IS_EDIT) return;
 
-            MainWindow.mainWindow.RightCard.WrapCard.Visibility = Visibility.Collapsed;
+            MainWindow.mainWindow.RightCard.WrapUFG.Visibility = Visibility.Collapsed;
 
             //设置对应菜单的图标列表
             if (MenuListBox.SelectedIndex == -1)
@@ -324,7 +324,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
             {
                 appData.AppConfig.SelectedMenuIcons = appData.MenuList[MenuListBox.SelectedIndex].IconList;
             }
-            MainWindow.mainWindow.RightCard.WrapCard.Visibility = Visibility.Visible;
+            MainWindow.mainWindow.RightCard.WrapUFG.Visibility = Visibility.Visible;
         }
 
 

+ 108 - 66
Control/UserControls/PannelCard/RightCardControl.xaml

@@ -7,6 +7,7 @@
              xmlns:hc="https://handyorg.github.io/handycontrol"
              xmlns:cvt="clr-namespace:GeekDesk.Converts"
              xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
+             xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800"
              >
@@ -37,6 +38,25 @@
             </Setter>
         </Style>
 
+        <Style x:Key="SearchListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
+            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
+            <Setter Property="VerticalAlignment" Value="Center"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
+                        <Border>
+                            <Border.Style>
+                                <Style TargetType="Border">
+                                    <Setter Property="VerticalAlignment" Value="Center"/>
+                                </Style>
+                            </Border.Style>
+                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+                        </Border>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
         <Storyboard x:Key="Custom1Transition1" x:Shared="False">
             <DoubleAnimation From="50" To="0" Duration="0:0:0.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
                 <DoubleAnimation.EasingFunction>
@@ -53,7 +73,7 @@
         </Storyboard>
 
         <Storyboard x:Key="Custom3Transition3" x:Shared="False">
-            <DoubleAnimation From=".8" To="1" Duration="0:0:0.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
+            <DoubleAnimation From=".8" To="1" Duration="0:0:0.4">
                 <DoubleAnimation.EasingFunction>
                     <ElasticEase Oscillations="1"/>
                 </DoubleAnimation.EasingFunction>
@@ -93,12 +113,13 @@
                    VirtualizingPanel.IsVirtualizing="True" 
                    VirtualizingPanel.IsContainerVirtualizable="True"
                    >
-                    <UniformGrid x:Name="WrapUFG">
-                        <hc:TransitioningContentControl TransitionStoryboard="{StaticResource Custom3Transition3}">
-                            <ListBox x:Name="IconListBox" ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=OneWay}" 
-                                 BorderThickness="0"
-                                Padding="0,10,0,0"
-                                 >
+                    <UniformGrid x:Name="WrapUFG" xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeInAndGrowHorizontally}, Event=Visibility}">
+                        <!--<hc:TransitioningContentControl TransitionStoryboard="{StaticResource Custom3Transition3}">-->
+                            <ListBox x:Name="IconListBox" 
+                                     ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=OneWay}" 
+                                     BorderThickness="0"
+                                     Padding="0,10,0,0"
+                                     >
                                 <ListBox.Background>
                                     <SolidColorBrush Opacity="0"/>
                                 </ListBox.Background>
@@ -133,41 +154,42 @@
 
                                 <ListBox.ItemTemplate>
                                     <DataTemplate>
-                                        <hc:SimpleStackPanel Tag="{Binding}"
-                                                     Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight, Mode=OneWay}" 
-                                                     Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth, Mode=OneWay}"
-                                                     HorizontalAlignment="Center"
-                                                     hc:Poptip.Content="{Binding Content}"
-                                                     hc:Poptip.Placement="BottomLeft"
-                                                     Background="#00FFFFFF"
-                                                     MouseEnter="StackPanel_MouseEnter"
-                                                     MouseLeave="StackPanel_MouseLeave"
-                                                     MouseLeftButtonDown="Icon_MouseLeftButtonDown"
-                                                     MouseLeftButtonUp="Icon_MouseLeftButtonUp"
-                                                     >
-                                            <!--<StackPanel Background="#00FFFFFF"
-                                                MouseEnter="CursorPanel_MouseEnter"
-                                                MouseLeave="CursorPanel_MouseLeave"
-                                                Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}">-->
-                                            <Image Style="{StaticResource ImageStyle}"  
-                                                   RenderOptions.BitmapScalingMode="HighQuality"/>
-                                            <TextBlock MaxWidth="80"
-                                                       Margin="0,5,0,0"
-                                                       MaxHeight="40"
-                                                       FontSize="13"
-                                                       TextWrapping="Wrap" 
-                                                       TextTrimming="WordEllipsis"
-                                                       TextAlignment="Center" 
-                                                       VerticalAlignment="Center" 
-                                                       Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
-                                                       Text="{Binding Name}"/>
-                                            <!--</StackPanel>-->
+                                        
+                                            <hc:SimpleStackPanel Tag="{Binding}"
+                                                         Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight, Mode=OneWay}" 
+                                                         Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth, Mode=OneWay}"
+                                                         HorizontalAlignment="Center"
+                                                         hc:Poptip.Content="{Binding Content}"
+                                                         hc:Poptip.Placement="BottomLeft"
+                                                         Background="#00FFFFFF"
+                                                         MouseEnter="StackPanel_MouseEnter"
+                                                         MouseLeave="StackPanel_MouseLeave"
+                                                         MouseLeftButtonDown="Icon_MouseLeftButtonDown"
+                                                         MouseLeftButtonUp="Icon_MouseLeftButtonUp"
+                                                         >
+                                                <!--<StackPanel Background="#00FFFFFF"
+                                                    MouseEnter="CursorPanel_MouseEnter"
+                                                    MouseLeave="CursorPanel_MouseLeave"
+                                                    Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}">-->
+                                                <Image Style="{StaticResource ImageStyle}"  
+                                                       RenderOptions.BitmapScalingMode="HighQuality"/>
+                                                <TextBlock MaxWidth="80"
+                                                           Margin="0,5,0,0"
+                                                           MaxHeight="40"
+                                                           FontSize="13"
+                                                           TextWrapping="Wrap" 
+                                                           TextTrimming="WordEllipsis"
+                                                           TextAlignment="Center" 
+                                                           VerticalAlignment="Center" 
+                                                           Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
+                                                           Text="{Binding Name}"/>
+                                                <!--</StackPanel>-->
 
-                                        </hc:SimpleStackPanel>
+                                            </hc:SimpleStackPanel>
                                     </DataTemplate>
                                 </ListBox.ItemTemplate>
                             </ListBox>
-                        </hc:TransitioningContentControl>
+                        <!--</hc:TransitioningContentControl>-->
                     </UniformGrid>
                 </WrapPanel>
 
@@ -194,12 +216,14 @@
                    VirtualizingPanel.IsVirtualizing="True"  
                    VirtualizingPanel.IsContainerVirtualizable="True"
                    >
-                    <UniformGrid x:Name="VerticalUFG">
-                        <hc:TransitioningContentControl TransitionMode="Left2RightWithFade">
+                    <UniformGrid x:Name="VerticalUFG" xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeIn}, OffsetY= -10, Event=Visibility}">
+                        <!--<hc:TransitioningContentControl TransitionMode="Left2RightWithFade">-->
                             <ListBox ItemsSource="{Binding Source={StaticResource SearchIconList},Path=IconList}" 
-                             BorderThickness="0"
-                             Padding="0,10,0,0"
-                             >
+                                     BorderThickness="0"
+                                     Padding="0,10,0,0"
+                                     x:Name="SearchListBox"
+                                     SelectionChanged="SearchListBox_SelectionChanged"
+                                     >
                                 <ListBox.Background>
                                     <SolidColorBrush Opacity="0"/>
                                 </ListBox.Background>
@@ -216,7 +240,7 @@
                                 </ListBox.Resources>
 
                                 <ListBox.ItemContainerStyle>
-                                    <Style TargetType="ListBoxItem" BasedOn="{StaticResource MyListBoxItemStyle}">
+                                    <Style TargetType="ListBoxItem" BasedOn="{StaticResource SearchListBoxItemStyle}">
                                         <Setter Property="ContextMenu" Value="{StaticResource IconDialog}"/>
                                     </Style>
                                 </ListBox.ItemContainerStyle>
@@ -231,36 +255,54 @@
 
                                 <ListBox.ItemTemplate>
                                     <DataTemplate>
+                                        <Border CornerRadius="8">
+                                        <Border.Style>
+                                            <Style TargetType="Border">
+                                                <Setter Property="VerticalAlignment" Value="Center"/>
+                                                <Style.Triggers>
+                                                    <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem }}}"
+                                                                 Value="True">
+                                                        <Setter Property="Background">
+                                                            <Setter.Value>
+                                                                <SolidColorBrush Color="White" Opacity="0.68"/>
+                                                            </Setter.Value>
+                                                        </Setter>
+                                                    </DataTrigger>
+                                                </Style.Triggers>
+                                            </Style>
+                                        </Border.Style>
                                         <WrapPanel Tag="{Binding}"
-                                           Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}" 
-                                           Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.MenuCardWidth, Mode=OneWay, Converter={StaticResource SearchResWidth}, ConverterParameter=2}" 
-                                           HorizontalAlignment="Left"
-                                           hc:Poptip.HitMode="None"
-                                           hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
-                                           hc:Poptip.Content="{Binding Content}"
-                                           hc:Poptip.Placement="BottomLeft"
-                                           Background="#00FFFFFF"
-                                           MouseLeftButtonDown="Icon_MouseLeftButtonDown"
-                                           MouseLeftButtonUp="Icon_MouseLeftButtonUp"
-                                           Margin="25,20,0,0"
-                                           >
+                                                   Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}" 
+                                                   Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.MenuCardWidth, Mode=OneWay, Converter={StaticResource SearchResWidth}, ConverterParameter=2}" 
+                                                   HorizontalAlignment="Left"
+                                                   VerticalAlignment="Center"
+                                                   hc:Poptip.HitMode="None"
+                                                   hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
+                                                   hc:Poptip.Content="{Binding Content}"
+                                                   hc:Poptip.Placement="BottomLeft"
+                                                   Background="#00FFFFFF"
+                                                   MouseLeftButtonDown="Icon_MouseLeftButtonDown"
+                                                   MouseLeftButtonUp="Icon_MouseLeftButtonUp"
+                                                   Margin="25,10,0,10"
+                                                   >
                                             <Image Style="{StaticResource ImageStyle}"  RenderOptions.BitmapScalingMode="HighQuality"/>
                                             <TextBlock
-                                           Margin="10,5,0,0"
-                                           MaxHeight="40"
-                                           FontSize="13"
-                                           TextWrapping="Wrap" 
-                                           TextTrimming="WordEllipsis"
-                                           TextAlignment="Left" 
-                                           VerticalAlignment="Center" 
-                                           Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
-                                           Text="{Binding Name}"/>
+                                               Margin="10,5,0,0"
+                                               MaxHeight="40"
+                                               FontSize="13"
+                                               TextWrapping="Wrap" 
+                                               TextTrimming="WordEllipsis"
+                                               TextAlignment="Left" 
+                                               VerticalAlignment="Center" 
+                                               Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
+                                               Text="{Binding Name}"/>
                                         </WrapPanel>
+                                    </Border>
                                     </DataTemplate>
                                 </ListBox.ItemTemplate>
                             </ListBox>
 
-                        </hc:TransitioningContentControl>
+                        <!--</hc:TransitioningContentControl>-->
                     </UniformGrid>
                 </WrapPanel>
 

+ 44 - 0
Control/UserControls/PannelCard/RightCardControl.xaml.cs

@@ -13,6 +13,7 @@ using System.Threading;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
+using System.Windows.Media;
 using System.Windows.Media.Animation;
 using System.Windows.Threading;
 
@@ -723,5 +724,48 @@ namespace GeekDesk.Control.UserControls.PannelCard
                 CardLockCM.Header = "锁定主面板";
             }
         }
+
+        public void SearchListBoxIndexAdd()
+        {
+            if (SearchListBox.Items.Count > 0)
+            {
+                if (SearchListBox.SelectedIndex < SearchListBox.Items.Count - 1)
+                {
+                    SearchListBox.SelectedIndex += 1;
+                }
+            }
+        }
+
+        public void SearchListBoxIndexSub()
+        {
+            if (SearchListBox.Items.Count > 0)
+            {
+                if (SearchListBox.SelectedIndex > 0)
+                {
+                    SearchListBox.SelectedIndex -= 1;
+                }
+            }
+        }
+
+        public void StartupSelectionItem()
+        {
+            if (SearchListBox.SelectedItem != null)
+            {
+                IconInfo icon = SearchListBox.SelectedItem as IconInfo;
+                if (icon.AdminStartUp)
+                {
+                    StartIconApp(icon, IconStartType.ADMIN_STARTUP);
+                }
+                else
+                {
+                    StartIconApp(icon, IconStartType.DEFAULT_STARTUP);
+                }
+            }
+        }
+
+        private void SearchListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            SearchListBox.ScrollIntoView(SearchListBox.SelectedItem);
+        }
     }
 }

+ 4 - 3
Control/Windows/ConfigWindow.xaml

@@ -4,6 +4,7 @@
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:hc="https://handyorg.github.io/handycontrol"
+           xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
            xmlns:local="clr-namespace:GeekDesk"
            Title="Setting"
            mc:Ignorable="d"
@@ -109,14 +110,14 @@
                             </hc:SideMenu>
                         </hc:Card>
                         <hc:ScrollViewer  Grid.Row="0" Grid.Column="1" BorderThickness="0" Margin="0,5,1,5">
-                            <UniformGrid x:Name="UFG">
-                                <hc:TransitioningContentControl TransitionMode="Left2RightWithFade">
+                            <UniformGrid x:Name="UFG" xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeInAndSlideFromLeft}, Event=Visibility}">
+                                <!--<hc:TransitioningContentControl TransitionMode="Left2RightWithFade">-->
                                     <hc:Card x:Name="RightCard" BorderThickness="0"  MouseDown="DragMove">
                                         <hc:Card.Background>
                                             <SolidColorBrush  Opacity="0"/>
                                         </hc:Card.Background>
                                     </hc:Card>
-                                </hc:TransitioningContentControl>
+                                <!--</hc:TransitioningContentControl>-->
                             </UniformGrid>
                         </hc:ScrollViewer>
 

+ 2 - 0
Control/Windows/ConfigWindow.xaml.cs

@@ -36,6 +36,8 @@ namespace GeekDesk.Control.Windows
             RightCard.Content = about;
             this.Topmost = true;
             this.mainWindow = mainWindow;
+            UFG.Visibility = Visibility.Collapsed;
+            UFG.Visibility = Visibility.Visible;
         }
 
 

+ 35 - 0
GeekDesk.csproj

@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props" Condition="Exists('packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" />
+  <Import Project="packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props" Condition="Exists('packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props')" />
+  <Import Project="packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props" Condition="Exists('packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props')" />
   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -30,6 +33,8 @@
     <IsWebBootstrapper>false</IsWebBootstrapper>
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>
@@ -113,12 +118,19 @@
     <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
       <HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
     </Reference>
+    <Reference Include="System.Reactive, Version=5.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
+      <HintPath>packages\System.Reactive.5.0.0\lib\net472\System.Reactive.dll</HintPath>
+    </Reference>
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
       <HintPath>packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.Remoting" />
+    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+      <HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
+    </Reference>
     <Reference Include="System.Web" />
     <Reference Include="System.Web.Extensions" />
+    <Reference Include="System.Windows" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="Microsoft.CSharp" />
@@ -132,6 +144,9 @@
     <Reference Include="WindowsBase" />
     <Reference Include="PresentationCore" />
     <Reference Include="PresentationFramework" />
+    <Reference Include="XamlFlair.WPF, Version=1.2.13.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>packages\XamlFlair.WPF.1.2.13\lib\net472\XamlFlair.WPF.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <ApplicationDefinition Include="App.xaml">
@@ -245,6 +260,7 @@
     <Compile Include="MyThread\UpdateThread.cs" />
     <Compile Include="Util\AeroGlassHelper.cs" />
     <Compile Include="Util\BGSettingUtil.cs" />
+    <Compile Include="Util\BlurGlassUtil.cs" />
     <Compile Include="Util\ColorUtil.cs" />
     <Compile Include="Util\DragAdorner.cs" />
     <Compile Include="Util\GlobalHotKey.cs" />
@@ -386,6 +402,11 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Resource\Dictionary\XamlFlairSettings.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Page>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs">
@@ -480,4 +501,18 @@
       <UserProperties update_1json__JsonSchema="https://typedoc.org/schema.json" />
     </VisualStudio>
   </ProjectExtensions>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.props'))" />
+    <Error Condition="!Exists('packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.targets'))" />
+    <Error Condition="!Exists('packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.props'))" />
+    <Error Condition="!Exists('packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.targets'))" />
+    <Error Condition="!Exists('packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.props'))" />
+    <Error Condition="!Exists('packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets'))" />
+  </Target>
+  <Import Project="packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.targets" Condition="Exists('packages\Microsoft.Build.Tasks.Git.1.0.0\build\Microsoft.Build.Tasks.Git.targets')" />
+  <Import Project="packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.targets" Condition="Exists('packages\Microsoft.SourceLink.Common.1.0.0\build\Microsoft.SourceLink.Common.targets')" />
+  <Import Project="packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets" Condition="Exists('packages\Microsoft.SourceLink.GitHub.1.0.0\build\Microsoft.SourceLink.GitHub.targets')" />
 </Project>

+ 3 - 2
MainWindow.xaml

@@ -5,6 +5,7 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:uc="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
         xmlns:cn="clr-namespace:GeekDesk.Constant"
+        xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
         mc:Ignorable="d"
         xmlns:cvt="clr-namespace:GeekDesk.Converts"
         x:Name="AppWindow"
@@ -20,7 +21,7 @@
         Opacity="0"
         Deactivated="AppWindow_Deactivated"
         SizeChanged="Window_SizeChanged"
-        KeyDown="OnKeyDown"
+        PreviewKeyDown="OnKeyDown"
         Focusable="True"
         MouseDown="MainWindow_MouseDown"
         MouseEnter="MainWindow_MouseEnter"
@@ -55,7 +56,7 @@
                               RenderingBias="Quality" ShadowDepth="2"/>
     </Window.Effect>
     <Border Margin="20" CornerRadius="{Binding AppConfig.PannelCornerRadius, Mode=TwoWay, Converter={StaticResource IntToCornerRadius}}"  BorderThickness="0"
-            Background="AliceBlue"
+            Background="#EBF7E3"
             Opacity="{Binding AppConfig.PannelOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}"
             hc:Dialog.Token="IconInfoDialog"
             Focusable="True"

+ 26 - 10
MainWindow.xaml.cs

@@ -16,6 +16,7 @@ using System.Threading;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
+using System.Windows.Interop;
 using System.Windows.Media.Animation;
 using System.Windows.Threading;
 using static GeekDesk.Util.ShowWindowFollowMouse;
@@ -52,8 +53,11 @@ namespace GeekDesk
             {
                 MarginHide.StartHide();
             }
+
         }
 
+       
+
 
         /// <summary>
         /// 显示搜索框
@@ -117,6 +121,10 @@ namespace GeekDesk
             {
                 SearchIconList.IconList.Clear();
             }
+            if (RightCard.SearchListBox.Items.Count > 0)
+            {
+                RightCard.SearchListBox.SelectedIndex = 0;
+            }
             RightCard.VerticalUFG.Visibility = Visibility.Visible;
         }
 
@@ -677,16 +685,24 @@ namespace GeekDesk
             {
                 HideApp();
             }
-            //else if (
-            //    appData.AppConfig.SearchType == SearchType.KEY_DOWN &&
-            //    (
-            //        (e.Key >= Key.D0 && e.Key <= Key.Z) 
-            //        || (e.Key >= Key.NumPad0 && e.Key < Key.NumPad9)
-            //        )
-            //    )
-            //{
-            //    ShowSearchBox();
-            //}
+
+            if (RunTimeStatus.SEARCH_BOX_SHOW && (e.Key == Key.Up 
+                || e.Key == Key.Down 
+                || e.Key == Key.Tab
+                || e.Key == Key.Enter
+                ))
+            {
+                if (e.Key == Key.Down || e.Key == Key.Tab)
+                {
+                    RightCard.SearchListBoxIndexAdd();
+                } else if (e.Key == Key.Up)
+                {
+                    RightCard.SearchListBoxIndexSub();
+                } else if (e.Key == Key.Enter)
+                {
+                    RightCard.StartupSelectionItem();
+                }
+            } 
         }
 
 

+ 7 - 0
Resource/Dictionary/XamlFlairSettings.xaml

@@ -0,0 +1,7 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF">
+<!--组合动画-->
+
+
+</ResourceDictionary>

+ 73 - 0
Util/BlurGlassUtil.cs

@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Interop;
+
+namespace GeekDesk.Util
+{
+    public class BlurGlassUtil
+    {
+        internal enum AccentState
+        {
+            ACCENT_DISABLED = 1,
+            ACCENT_ENABLE_GRADIENT = 0,
+            ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
+            ACCENT_ENABLE_BLURBEHIND = 3,
+            ACCENT_INVALID_STATE = 4
+        }
+
+        [StructLayout(LayoutKind.Sequential)]
+        internal struct AccentPolicy
+        {
+            public AccentState AccentState;
+            public int AccentFlags;
+            public int GradientColor;
+            public int AnimationId;
+        }
+
+        [StructLayout(LayoutKind.Sequential)]
+        internal struct WindowCompositionAttributeData
+        {
+            public WindowCompositionAttribute Attribute;
+            public IntPtr Data;
+            public int SizeOfData;
+        }
+
+        internal enum WindowCompositionAttribute
+        {
+            // ...
+            WCA_ACCENT_POLICY = 19
+            // ...
+        }
+
+        [DllImport("user32.dll")]
+        internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data);
+
+
+        public static void EnableBlur(Window window)
+        {
+            var windowHelper = new WindowInteropHelper(window);
+
+            var accent = new AccentPolicy();
+            accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND;
+
+            var accentStructSize = Marshal.SizeOf(accent);
+
+            var accentPtr = Marshal.AllocHGlobal(accentStructSize);
+            Marshal.StructureToPtr(accent, accentPtr, false);
+
+            var data = new WindowCompositionAttributeData();
+            data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY;
+            data.SizeOfData = accentStructSize;
+            data.Data = accentPtr;
+
+            SetWindowCompositionAttribute(windowHelper.Handle, ref data);
+
+            Marshal.FreeHGlobal(accentPtr);
+        }
+    }
+}

+ 6 - 0
packages.config

@@ -3,7 +3,10 @@
   <package id="CommonServiceLocator" version="2.0.6" targetFramework="net452" requireReinstallation="true" />
   <package id="HandyControl" version="3.3.0" targetFramework="net472" />
   <package id="KeyMouseHook" version="1.0.6" targetFramework="net472" developmentDependency="true" />
+  <package id="Microsoft.Build.Tasks.Git" version="1.0.0" targetFramework="net472" developmentDependency="true" />
   <package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.1" targetFramework="net472" />
+  <package id="Microsoft.SourceLink.Common" version="1.0.0" targetFramework="net472" developmentDependency="true" />
+  <package id="Microsoft.SourceLink.GitHub" version="1.0.0" targetFramework="net472" developmentDependency="true" />
   <package id="MouseKeyHook" version="5.6.0" targetFramework="net472" />
   <package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
   <package id="NPinyin.Core" version="3.0.0" targetFramework="net472" />
@@ -13,5 +16,8 @@
   <package id="System.Drawing.Common" version="6.0.0-preview.6.21352.12" targetFramework="net472" />
   <package id="System.Memory" version="4.5.4" targetFramework="net472" />
   <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
+  <package id="System.Reactive" version="5.0.0" targetFramework="net472" />
   <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
+  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
+  <package id="XamlFlair.WPF" version="1.2.13" targetFramework="net472" />
 </packages>