NewLife/XCoder

二级菜单
BearXiongLaoXiong authored at 2020-08-20 18:16:52
c0bb8db
Tree
1 Parent(s) 10ebb93
Summary: 18 changed files with 226 additions and 207 deletions.
Modified +1 -1
Added +59 -0
Added +21 -0
Added +0 -0
Deleted +0 -0
XCoderWpf/Resources/MainMenu/data.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database1.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database2.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database3.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/file.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/Print.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/Tcp.png
Added +32 -0
Modified +29 -19
Modified +57 -12
Modified +14 -156
Modified +9 -1
Modified +4 -18
Modified +1 -1
diff --git a/CrazyCoder/MainWindow.xaml b/CrazyCoder/MainWindow.xaml
index 53a4123..395775f 100644
--- a/CrazyCoder/MainWindow.xaml
+++ b/CrazyCoder/MainWindow.xaml
@@ -139,7 +139,7 @@
 
                                 <StackPanel  Orientation="Horizontal">
                                     <TextBlock Grid.Column="0" Text="{Binding IconFont}" FontFamily="./Fonts/#iconfont" FontSize="22" 
-                                                   Margin="10 0 0 0" Foreground="{Binding BackColor}"/>
+                                                   Margin="10 0 0 0" Foreground="Red"/>
                                     <TextBlock Margin="10 0 0 0" Text="{Binding Title}"  FontSize="14" VerticalAlignment="Center" 
                                    Foreground="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, 
                                         AncestorType={x:Type RadioButton}}}" />
Added +59 -0
diff --git a/XCoderWpf/Common/MainMenu.cs b/XCoderWpf/Common/MainMenu.cs
new file mode 100644
index 0000000..971df40
--- /dev/null
+++ b/XCoderWpf/Common/MainMenu.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using HandyControl.Controls;
+using XCoderWpf.Models;
+using XCoderWpf.ViewModels;
+using XCoderWpf.Views;
+
+namespace XCoderWpf.Common
+{
+    public class MainMenu
+    {
+        private readonly SolidColorBrush _solidColorBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#7F4463"));
+        private readonly FontFamily _yhFontFamily = new FontFamily("微软雅黑");
+        private readonly FontFamily _fontFamily = new FontFamily(new Uri("pack://application:,,,/"), "./Resources/#iconfont");
+        private readonly Thickness _margin = new Thickness(10, 0, 0, 0);
+        private readonly SideMenu _sizeMenu;
+        private readonly MainWindowViewModel _mainViewViewModel;
+
+        public MainMenu(MainWindowViewModel vm, SideMenu sizeMenu) { _mainViewViewModel = vm; _sizeMenu = sizeMenu; }
+
+        public void InitializeSystemMenu()
+        {
+            var menus = _mainViewViewModel.MainMenuList;
+            var lvl1Data = menus.Where(x => x.Pid == x.Id).ToList();
+
+            _sizeMenu.Items.Clear();
+            var lvl1MenuList = lvl1Data.Select(x => GetSideMenuItem(x, _yhFontFamily)).ToArray();
+            _sizeMenu.Items.AddRange(lvl1MenuList);
+
+            for (var index = 0; index < lvl1Data.Count; index++)
+                lvl1MenuList[index].Items.AddRange(menus.Where(x => x.Pid == lvl1Data[index].Id && x.Pid != x.Id).Select(x => GetSideMenuItem(x)));
+        }
+
+        private SideMenuItem GetSideMenuItem(MainMenuModel item, FontFamily fontFamily = null)
+        {
+            var side = new SideMenuItem
+            {
+                Header = item.Header,
+                Foreground = _solidColorBrush,
+                Icon = new TextBlock { Text = item.IconFont, FontFamily = _fontFamily, Margin = _margin, Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString(item.BackColor)) },
+                Tag = item.Tag,
+                //Command = _mainViewViewModel.SelectCmd,
+                //CommandParameter = item.Tag,
+            };
+            if (fontFamily == null) return side;
+            side.FontFamily = _yhFontFamily;
+            side.FontSize = 20;
+            return side;
+        }
+    }
+}
Added +21 -0
diff --git a/XCoderWpf/Models/MainMenuModel.cs b/XCoderWpf/Models/MainMenuModel.cs
new file mode 100644
index 0000000..ebc4f47
--- /dev/null
+++ b/XCoderWpf/Models/MainMenuModel.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XCoderWpf.Models
+{
+    public class MainMenuModel
+    {
+        public String IconFont { get; set; }
+
+        public String Header { get; set; }
+
+        public String BackColor { get; set; }
+
+        public String Tag { get; set; }
+        public int Id { get; set; }
+        public int Pid { get; set; }
+    }
+}
Added +0 -0
diff --git a/XCoderWpf/Resources/iconfont.ttf b/XCoderWpf/Resources/iconfont.ttf
new file mode 100644
index 0000000..c767334
Binary files /dev/null and b/XCoderWpf/Resources/iconfont.ttf differ
Deleted +0 -0
XCoderWpf/Resources/MainMenu/data.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database1.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database2.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/database3.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/file.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/Print.png
Deleted +0 -0
XCoderWpf/Resources/MainMenu/Tcp.png
Added +32 -0
diff --git a/XCoderWpf/ViewModels/DataBasePublishViewModel.cs b/XCoderWpf/ViewModels/DataBasePublishViewModel.cs
new file mode 100644
index 0000000..38dfe99
--- /dev/null
+++ b/XCoderWpf/ViewModels/DataBasePublishViewModel.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Prism.Mvvm;
+
+namespace XCoderWpf.ViewModels
+{
+    public class DataBasePublishViewModel : BindableBase
+    {
+        private IList<string> _datalist;
+        public IList<string> DataList
+        {
+            get { return _datalist; }
+            set { SetProperty(ref _datalist, value); }
+        }
+        public DataBasePublishViewModel()
+        {
+            DataList = new ObservableCollection<string>
+            {
+                "mssql111",
+                "mssql112",
+                "mssql113",
+                "mssql114",
+                "mssql115",
+                "mssql1117",
+            };
+        }
+    }
+}
Modified +29 -19
diff --git a/XCoderWpf/ViewModels/MainWindowViewModel.cs b/XCoderWpf/ViewModels/MainWindowViewModel.cs
index 33a0bdb..cec6b1a 100644
--- a/XCoderWpf/ViewModels/MainWindowViewModel.cs
+++ b/XCoderWpf/ViewModels/MainWindowViewModel.cs
@@ -1,48 +1,58 @@
 using System;
+using System.Collections.Generic;
 using System.Windows.Controls;
 using HandyControl.Controls;
 using HandyControl.Data;
 using Prism.Commands;
 using Prism.Mvvm;
 using Prism.Regions;
+using XCoderWpf.Models;
+using XCoderWpf.Views;
 
 namespace XCoderWpf.ViewModels
 {
     public class MainWindowViewModel : BindableBase
     {
         private readonly IRegionManager _region;
-        public DelegateCommand<SelectionChangedEventArgs> SwitchItemCommand { get; set; }
+        public  List<MainMenuModel> MainMenuList => new List<MainMenuModel>
+        {
+            new MainMenuModel { Id = 0 , Pid = 0 , IconFont = "\xe635", Header = "数据库", BackColor = "#218868" },
+            new MainMenuModel { Id = 1 , Pid = 0 , IconFont = "\xe635", Header = "数据建模", BackColor = "#218868", Tag = nameof(DataBasePublish) },
+            new MainMenuModel { Id = 2 , Pid = 0 , IconFont = "\xe6b6", Header = "网络工具", BackColor = "#EE3B3B", Tag = nameof(RegexWindow)},
+            new MainMenuModel { Id = 3 , Pid = 0 , IconFont = "\xe6e1", Header = "RPC工具", BackColor = "#218868" },
+
+            new MainMenuModel { Id = 20, Pid = 20, IconFont = "\xe614", Header = "串口工具", BackColor = "#EE3B3B" },
+            new MainMenuModel { Id = 21, Pid = 20, IconFont = "\xe755", Header = "地图接口", BackColor = "#218868" },
+            new MainMenuModel { Id = 22, Pid = 20, IconFont = "\xe635", Header = "正则表达式", BackColor = "#218868", Tag = nameof(RegexWindow) },
+            new MainMenuModel { Id = 23, Pid = 20, IconFont = "\xe6b6", Header = "图标水印", BackColor = "#EE3B3B" },
+            new MainMenuModel { Id = 24, Pid = 20, IconFont = "\xe6e1", Header = "加密解密", BackColor = "#218868" },
 
-        private String _title = "码神工具";
+            new MainMenuModel { Id = 50, Pid = 50, IconFont = "\xe614", Header = "语音助手", BackColor = "#EE3B3B" },
+            new MainMenuModel { Id = 52, Pid = 50, IconFont = "\xe755", Header = "文件夹统计", BackColor = "#218868" },
+            new MainMenuModel { Id = 53, Pid = 50, IconFont = "\xe635", Header = "文件编码", BackColor = "#218868" }
+        };
+
+        private String _title = "";
         public String Title
         {
             get => _title;
             set => SetProperty(ref _title, value);
         }
 
-        public MainWindowViewModel(IRegionManager regionManager)
-        {
-            _region = regionManager;
-            SwitchItemCommand = new DelegateCommand<SelectionChangedEventArgs>(OnSwitchItem);
-        }
 
-        public DelegateCommand<FunctionEventArgs<object>> SwitchItemCmd => new Lazy<DelegateCommand<FunctionEventArgs<object>>>(() =>
-             new DelegateCommand<FunctionEventArgs<object>>(SwitchItem)).Value;
-        private void SwitchItem(FunctionEventArgs<object> info)
-        {
-            if (!(info.Info is SideMenuItem item)) return;
-            _region.RequestNavigate("ContentRegion", item.Tag != null ? item.Tag.ToString() : "Overview");
-            Growl.Info((info.Info as SideMenuItem)?.Header.ToString());
-        }
+        public MainWindowViewModel(IRegionManager regionManager) => _region = regionManager;
+
+        public DelegateCommand<FunctionEventArgs<object>> SwitchItemCommand => new Lazy<DelegateCommand<FunctionEventArgs<object>>>(() => new DelegateCommand<FunctionEventArgs<object>>(OnSwitchItem)).Value;
+        public DelegateCommand<string> SelectCmd => new Lazy<DelegateCommand<string>>(() => new DelegateCommand<string>(Select)).Value;
 
-        private void OnSwitchItem(SelectionChangedEventArgs e)
+
+
+        private void OnSwitchItem(FunctionEventArgs<object> info)
         {
-            if (!(e.AddedItems[0] is ListBoxItem item)) return;
+            if (!(info.Info is SideMenuItem item)) return;
             _region.RequestNavigate("ContentRegion", item.Tag != null ? item.Tag.ToString() : "Overview");
         }
 
-        public DelegateCommand<string> SelectCmd => new Lazy<DelegateCommand<string>>(() =>
-            new DelegateCommand<string>(Select)).Value;
 
         private void Select(string header) => Growl.Success(header);
     }
Modified +57 -12
diff --git a/XCoderWpf/Views/DataBasePublish.xaml b/XCoderWpf/Views/DataBasePublish.xaml
index 22900bc..efcbf37 100644
--- a/XCoderWpf/Views/DataBasePublish.xaml
+++ b/XCoderWpf/Views/DataBasePublish.xaml
@@ -1,18 +1,63 @@
 <UserControl x:Class="XCoderWpf.Views.DataBasePublish"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:XCoderWpf.Views"
-             mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
-    <Grid>
-        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-            <TextBlock Style="{StaticResource TextBlockLarge}">ahahahahahaha非常好</TextBlock>
-            <Button Margin="10" Style="{StaticResource ButtonDanger}"> 11111111111111111</Button>
-            <Button Margin="10" Style="{StaticResource ButtonSuccess}">2222222222 2221</Button>
-            <Button Margin="10" Style="{StaticResource ButtonWarning}">2222222222 2221</Button>
+             xmlns:prism="http://prismlibrary.com/"    
+             xmlns:hc="https://handyorg.github.io/handycontrol"
+             prism:ViewModelLocator.AutoWireViewModel="True">
+    <Grid Background="{DynamicResource BackgroundBrush}">
+        <Border Background="{DynamicResource RegionBrush}"  Effect="{StaticResource EffectShadow4}" CornerRadius="16" Margin="10">
+            <Grid >
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition/>
+                    <ColumnDefinition Width="2*"/>
+                </Grid.ColumnDefinitions>
 
-        </StackPanel>
+                <Border Effect="{StaticResource EffectShadow4}" Background="{DynamicResource DarkDefaultBrush}" CornerRadius="16,0,0,16">
+                   
+                    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Vertical">
+                        <hc:ComboBox Margin="30,30,30,0" AutoComplete="True" ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" hc:InfoElement.Placeholder="请选择"  hc:TitleElement.Title="数据库连接"/>
+
+                        <TextBlock Margin="40,80,0,0" Foreground="White">
+                            <Bold>提示</Bold>path
+                        </TextBlock>
+
+                        <TextBlock FontWeight="DemiBold" FontSize="22" Foreground="White" Margin="40">
+                            2种用法<LineBreak/>
+                            
+                        </TextBlock>
+                        <TextBlock FontWeight="Medium" Margin="40,0" Foreground="{DynamicResource ThirdlyTextBrush}">
+                                1.连接数据库,得到数据表信息<LineBreak/>
+                                2.导入模型,得到数据表信息<LineBreak/>
+                                
+                        </TextBlock>
+                        <Image Margin="40,280" Width="46" HorizontalAlignment="Left" Source="{StaticResource Sagittarius}"/>
+                    </StackPanel>
+                </Border>
+                
+                <Border Effect="{StaticResource EffectShadow4}" Grid.Column="1" Background="{DynamicResource RegionBrush}" CornerRadius="0,16,16,0">
+                    <StackPanel HorizontalAlignment="Center">
+                        <Image Margin="30" Source="{StaticResource Table}" Width="128"/>
+                        <StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
+                            <Image Width="24" Source="{StaticResource Graduation}"/>
+                            <TextBlock Margin="5,0" Text="Create an account" FontWeight="Bold" FontSize="14"/>
+                        </StackPanel>
+                        <Button Width="350" Margin="0,40">
+                            <StackPanel Orientation="Horizontal">
+                                <Image Margin="10,0" Source="{StaticResource Google}"/>
+
+                                <TextBlock Text="Sign up with Google"/>
+                            </StackPanel>
+                        </Button>
+                        <hc:Divider Width="350" Content="OR"/>
+                        <TextBox Style="{StaticResource TextBoxExtend}" hc:TitleElement.Title="Your email" Text="mahdidvb72@gmail.com"/>
+                        <PasswordBox Style="{StaticResource PasswordBoxExtend}" hc:TitleElement.Title="Set password"/>
+                        <Button Content="Sign up" Style="{DynamicResource ButtonViolet}" Margin="0,30" Width="350"/>
+                        <TextBlock Margin="0,50,0,0" HorizontalAlignment="Center" >
+                                Already have an account? <Button Margin="-4,-10" Content="Sign in" BorderThickness="0" Foreground="Purple" FontWeight="DemiBold" />
+                        </TextBlock>
+                    </StackPanel>
+                </Border>
+            </Grid>
+        </Border>
     </Grid>
 </UserControl>
Modified +14 -156
diff --git a/XCoderWpf/Views/MainWindow.xaml b/XCoderWpf/Views/MainWindow.xaml
index aae9a4f..4c920da 100644
--- a/XCoderWpf/Views/MainWindow.xaml
+++ b/XCoderWpf/Views/MainWindow.xaml
@@ -7,7 +7,6 @@
         xmlns:prism="http://prismlibrary.com/"
         prism:ViewModelLocator.AutoWireViewModel="True"
         mc:Ignorable="d"
-        WindowState="Maximized"
         ResizeMode="CanResizeWithGrip"
         Title="{Binding Title}" 
         WindowStartupLocation="CenterScreen"
@@ -20,6 +19,8 @@
                 <ColumnDefinition/>
                 <ColumnDefinition/>
             </Grid.ColumnDefinitions>
+            <hc:Shield HorizontalAlignment="Right" Grid.Column="1" Margin="0,0,50,0" Color="{DynamicResource DangerBrush}" Subject="Github" Status="码神工具" Cursor="Hand" hc:Command="hc:ControlCommands.OpenLink" CommandParameter="https://github.com/NewLifeX/XCoder"/>
+
             <Button HorizontalAlignment="Right" Grid.Column="1" Click="ButtonConfig_OnClick" Name="ButtonConfig" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource PrimaryTextBrush}" hc:IconElement.Geometry="{StaticResource ConfigGeometry}"/>
             <Popup AllowsTransparency="True" Grid.Column="1" PlacementTarget="{Binding ElementName=ButtonConfig}" HorizontalOffset="-25" Name="PopupConfig" VerticalOffset="6" StaysOpen="False">
                 <Border Background="{DynamicResource SecondaryRegionBrush}" CornerRadius="4" Margin="16" Effect="{StaticResource EffectShadow2}">
@@ -40,163 +41,20 @@
     </hc:Window.NonClientAreaContent>
     <Grid>
         <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="260"/>
+            <ColumnDefinition Width="170"/>
             <ColumnDefinition/>
         </Grid.ColumnDefinitions>
-        <!--<ListBox Style="{StaticResource ListBoxModernStyle}">
-            <ListBoxItem Tag="DataBasePublish" Margin="10,10,10,0" Content="数据建模工具"/>
-            <ListBoxItem Tag="RegexWindow" Margin="10,0" Content="正则表达式工具"/>
-            <ListBoxItem Tag="UploadToCloud" Margin="10,0" Content="网络调试工具"/>
-            <ListBoxItem Tag="MusicPlayer" hc:ListBoxAttach.IsNew="True" Margin="10,0" Content="Api调试"/>
-            <ListBoxItem Tag="Login" hc:ListBoxAttach.IsNew="True" Margin="10,0" Content="语音小助手"/>
-            <hc:Interaction.Triggers>
-                <hc:EventTrigger EventName="SelectionChanged">
-                    <hc:EventToCommand Command="{Binding SwitchItemCommand}" PassEventArgsToCommand="True"/>
-                </hc:EventTrigger>
-            </hc:Interaction.Triggers>
-        </ListBox>-->
-        <hc:SideMenu BorderThickness="1" Margin="3">
-            <hc:Interaction.Triggers>
-                <hc:EventTrigger EventName="SelectionChanged">
-                    <hc:EventToCommand Command="{Binding SwitchItemCmd}" PassEventArgsToCommand="True"  />
-                </hc:EventTrigger>
-            </hc:Interaction.Triggers>
-            <hc:SideMenuItem Header="数据库">
-                <hc:SideMenuItem.Icon>
-                    <Image Source="/Resources/MainMenu/database.png" Width="24" Height="24"/>
-                </hc:SideMenuItem.Icon>
-                <hc:SideMenuItem Header="数据库模型" Tag="DataBasePublish"   Command="{Binding SelectCmd}"   CommandParameter="{Binding Header,RelativeSource={RelativeSource Self}}">
-                    <hc:SideMenuItem.Icon>
-                        <Image Source="/Resources/MainMenu/database1.png" Width="16" Height="16"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="分库分表"  Command="{Binding SelectCmd}"   CommandParameter="{Binding Header,RelativeSource={RelativeSource Self}}">
-                    <hc:SideMenuItem.Icon>
-                        <Image Source="/Resources/MainMenu/database2.png" Width="16" Height="16"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="备份"   CommandParameter="{Binding Header,RelativeSource={RelativeSource Self}}">
-                    <hc:SideMenuItem.Icon>
-                        <Image Source="/Resources/MainMenu/database3.png" Width="16" Height="16"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-            </hc:SideMenuItem>
-            <hc:SideMenuItem Header="网络">
-                <hc:SideMenuItem.Icon>
-                    <Image Source="/Resources/MainMenu/Tcp.png" Width="24" Height="24"/>
-                </hc:SideMenuItem.Icon>
-                <hc:SideMenuItem Header="Work Items">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf314;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Boards">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf444;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Backlogs">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf6bf;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Sprints">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf3b0;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Queries">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf2b8;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-            </hc:SideMenuItem>
-            <hc:SideMenuItem Header="图表库">
-                <hc:SideMenuItem.Icon>
-                    <Image Source="/Resources/MainMenu/data.png" Width="24" Height="24"/>
-                </hc:SideMenuItem.Icon>
-                <hc:SideMenuItem Header="Files">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf30e;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Commits">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf293;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Pushes">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf298;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Branches">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xebc2;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Tags">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xe8ec;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Pull requests">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf296;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-            </hc:SideMenuItem>
-            <hc:SideMenuItem Header="文件">
-                <hc:SideMenuItem.Icon>
-                    <Image Source="/Resources/MainMenu/file.png" Width="24" Height="24"/>
-                </hc:SideMenuItem.Icon>
-                <hc:SideMenuItem Header="Builds">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf28f;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Releases">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf3b3;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Library">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xe8f1;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Task groups">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf2ae;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Deployment groups">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf29d;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-            </hc:SideMenuItem>
-            <hc:SideMenuItem Header="传输">
-                <hc:SideMenuItem.Icon>
-                    <Image Source="/Resources/MainMenu/print.png" Width="24" Height="24"/>
-                </hc:SideMenuItem.Icon>
-                <hc:SideMenuItem Header="Test Plans">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf3ab;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Runs">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xf3ac;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-                <hc:SideMenuItem Header="Load test">
-                    <hc:SideMenuItem.Icon>
-                        <TextBlock Text="&#xe8a9;" Style="{StaticResource TextBlockTitle}"/>
-                    </hc:SideMenuItem.Icon>
-                </hc:SideMenuItem>
-            </hc:SideMenuItem>
-        </hc:SideMenu>
+        <Border x:Name="BorderMain" Margin="{Binding MenuMargin}" BorderThickness="0,1,1,1" Panel.ZIndex="1" BorderBrush="#DDDDDD">
+            <hc:TransitioningContentControl>
+                <hc:SideMenu Foreground="#7F4463" x:Name="MainSideMenu" ExpandMode="Freedom" AutoSelect="False">
+                    <hc:Interaction.Triggers>
+                        <hc:EventTrigger EventName="SelectionChanged">
+                            <hc:EventToCommand Command="{Binding SwitchItemCommand}" PassEventArgsToCommand="True"  />
+                        </hc:EventTrigger>
+                    </hc:Interaction.Triggers>
+                </hc:SideMenu>
+            </hc:TransitioningContentControl>
+        </Border>
         <ContentControl prism:RegionManager.RegionName="ContentRegion" Grid.Column="1" />
     </Grid>
 </hc:Window>
Modified +9 -1
diff --git a/XCoderWpf/Views/MainWindow.xaml.cs b/XCoderWpf/Views/MainWindow.xaml.cs
index 4c03f54..4b19f09 100644
--- a/XCoderWpf/Views/MainWindow.xaml.cs
+++ b/XCoderWpf/Views/MainWindow.xaml.cs
@@ -2,6 +2,10 @@
 using HandyControl.Data;
 using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using XCoderWpf.Common;
+using XCoderWpf.ViewModels;
 
 namespace XCoderWpf.Views
 {
@@ -10,7 +14,11 @@ namespace XCoderWpf.Views
     /// </summary>
     public partial class MainWindow
     {
-        public MainWindow() => InitializeComponent();
+        public MainWindow()
+        {
+            InitializeComponent();
+            new MainMenu(DataContext as MainWindowViewModel, MainSideMenu).InitializeSystemMenu();
+        }
 
         #region Change Skin
         private void ButtonConfig_OnClick(Object sender, RoutedEventArgs e) => PopupConfig.IsOpen = true;
Modified +4 -18
diff --git a/XCoderWpf/XCoderWpf.csproj b/XCoderWpf/XCoderWpf.csproj
index b2392da..e4138ae 100644
--- a/XCoderWpf/XCoderWpf.csproj
+++ b/XCoderWpf/XCoderWpf.csproj
@@ -7,30 +7,16 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <None Remove="Resources\MainMenu\data.png" />
-    <None Remove="Resources\MainMenu\database.png" />
-    <None Remove="Resources\MainMenu\database1.png" />
-    <None Remove="Resources\MainMenu\database2.png" />
-    <None Remove="Resources\MainMenu\database3.png" />
-    <None Remove="Resources\MainMenu\file.png" />
-    <None Remove="Resources\MainMenu\Print.png" />
-    <None Remove="Resources\MainMenu\Tcp.png" />
+    <None Remove="Resources\iconfont.ttf" />
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="HandyControls" Version="2.5.3.2" />
-    <PackageReference Include="Prism.DryIoc" Version="8.0.0.1740-pre" />
+    <Resource Include="Resources\iconfont.ttf" />
   </ItemGroup>
 
   <ItemGroup>
-    <Resource Include="Resources\MainMenu\data.png" />
-    <Resource Include="Resources\MainMenu\database.png" />
-    <Resource Include="Resources\MainMenu\database1.png" />
-    <Resource Include="Resources\MainMenu\database2.png" />
-    <Resource Include="Resources\MainMenu\database3.png" />
-    <Resource Include="Resources\MainMenu\file.png" />
-    <Resource Include="Resources\MainMenu\Print.png" />
-    <Resource Include="Resources\MainMenu\Tcp.png" />
+    <PackageReference Include="HandyControls" Version="2.5.3.2" />
+    <PackageReference Include="Prism.DryIoc" Version="8.0.0.1740-pre" />
   </ItemGroup>
 
 </Project>