diff --git a/Project.FLY.FlyADBase/FlyADBase/FlyADBase.csproj b/Project.FLY.FlyADBase/FlyADBase/FlyADBase.csproj
index e84a9dc9d196bef91c7425c37ce1d3b833dc011a..a8a2a12047c885151eda929fc134e1a40122d864 100644
--- a/Project.FLY.FlyADBase/FlyADBase/FlyADBase.csproj
+++ b/Project.FLY.FlyADBase/FlyADBase/FlyADBase.csproj
@@ -80,7 +80,7 @@
       <Version>10.1.1</Version>
     </PackageReference>
     <PackageReference Include="NLog">
-      <Version>5.1.0</Version>
+      <Version>4.6.8</Version>
     </PackageReference>
     <PackageReference Include="PropertyChanged.Fody">
       <Version>4.1.0</Version>
diff --git a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml
index 4be0b22a1fb6dfa7e420823999a8cece8cfb32eb..1e0ac8af7720865016f16638f61cbd7aad5e8dcc 100644
--- a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml
+++ b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml
@@ -11,8 +11,7 @@
     <UserControl.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
-                <ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
-                <ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/Styles.xaml"/>
+                <ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Converters.xaml"/>
                 <ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/GraphStyle.xaml"/>
             </ResourceDictionary.MergedDictionaries>
             <local:FixGraphVmUt x:Key="viewModel" Max="65540" Min="655" Average="123" Sigma3="3.2"/>
@@ -36,23 +35,23 @@
                     <lvc:LineSeries 
                         Values="{Binding Values}"
                         StrokeThickness = "3"
-                        Stroke = "{StaticResource Brushes.Activity}"
-                        
+                        Stroke = "{StaticResource Brushes.Accent}"
                         Fill = "Transparent"
                         PointGeometry ="{x:Null}"/>
                 </lvc:CartesianChart.Series>
                 <lvc:CartesianChart.AxisX>
-                    <lvc:Axis LabelFormatter="{Binding XFormatter}" FontSize="16" Foreground="Black"
+                    <lvc:Axis LabelFormatter="{Binding XFormatter}" Foreground="{StaticResource Brushes.Text.Black}"
                           MaxValue="{Binding XMax}" MinValue="{Binding XMin}">
                         <lvc:Axis.Separator>
-                            <lvc:Separator Stroke="LightGray"/>
+                            <lvc:Separator Stroke="{StaticResource Brushes.Text.Gray}" StrokeDashArray="3"  />
                         </lvc:Axis.Separator>
                     </lvc:Axis>
                 </lvc:CartesianChart.AxisX>
                 <lvc:CartesianChart.AxisY>
-                    <lvc:Axis LabelFormatter="{Binding YFormatter}" MaxValue="{Binding YMax}" MinValue="{Binding YMin}" Panel.ZIndex="0" Foreground="Black">
+                    <lvc:Axis LabelFormatter="{Binding YFormatter}" Foreground="{StaticResource Brushes.Text.Black}"
+                              MaxValue="{Binding YMax}" MinValue="{Binding YMin}" >
                         <lvc:Axis.Separator>
-                            <lvc:Separator StrokeThickness="1" Stroke="LightGray" />
+                            <lvc:Separator Stroke="{StaticResource Brushes.Text.Gray}" StrokeDashArray="3"  />
                         </lvc:Axis.Separator>
                     </lvc:Axis>
                 </lvc:CartesianChart.AxisY >
@@ -68,43 +67,51 @@
                     </TextBlock>
                 </Grid>
             </Button>
-            <Grid Grid.Column="1" Grid.RowSpan="2" Panel.ZIndex="2" >
+            <Grid Grid.Column="1" Grid.RowSpan="2" Panel.ZIndex="2" VerticalAlignment="Top" >
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition/>
                     <ColumnDefinition Width="auto"/>
                 </Grid.ColumnDefinitions>
-                <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}">
-                    <Viewbox MaxHeight="{StaticResource FontSize.Value}" HorizontalAlignment="Left" Margin="2">
-                        <StackPanel Orientation="Horizontal" >
-                            <TextBlock Style="{StaticResource TitleStyle}" Text="AD值" Foreground="{StaticResource Brushes.Highlight}" Visibility="{Binding IsADMode,Converter={StaticResource visbilityconv}}"/>
-                            <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Time,StringFormat={}{0:HH:mm:ss}}"/>
-                        </StackPanel>
-                    </Viewbox>
-                    <Viewbox MaxHeight="{StaticResource FontSize.Value}" HorizontalAlignment="Left" Margin="2">
-                        <StackPanel Orientation="Horizontal">
-                            <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}"
-                                        Background="{StaticResource SemiTransparentGreyBrush2}">
-                                <TextBlock Style="{StaticResource TitleStyle}" Text="é—´éš”:" />
-                                <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Intervalms}"/>
-                                <TextBlock Style="{StaticResource UnitStyle}" Text="ms" />
+                <Grid 
+                  HorizontalAlignment="Left" >
+                    <Viewbox MaxHeight="{StaticResource GraphInfo2RowMaxHeight}" Margin="{StaticResource ControlMargin}">
+                        <StackPanel>
+                            <StackPanel Orientation="Horizontal" >
+                                <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}">
+                                    <TextBlock Style="{StaticResource TitleStyle}" Text="AD" Foreground="{StaticResource Brushes.Highlight}" Visibility="{Binding IsADMode,Converter={StaticResource visbilityconv}}"/>
+                                </StackPanel>
+                                <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}">
+                                    <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Time,StringFormat={}{0:HH:mm:ss}}"/>
+                                </StackPanel>
                             </StackPanel>
-                            <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}"
-                                        Background="{StaticResource SemiTransparentGreyBrush2}">
-                                <TextBlock Style="{StaticResource TitleStyle}" Text="混合:" />
-                                <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Mix}"/>
+                            <StackPanel Orientation="Horizontal">
+                                <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}"
+                                        Background="{StaticResource TextTransparentBackgroundBrush}">
+                                    <TextBlock Style="{StaticResource TitleStyle}" Text="é—´éš”" />
+                                    <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Intervalms}"/>
+                                    <TextBlock Style="{StaticResource UnitStyle}" Text="ms" />
+                                </StackPanel>
+                                <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}"
+                                        Background="{StaticResource TextTransparentBackgroundBrush}">
+                                    <TextBlock Style="{StaticResource TitleStyle}" Text="混合" />
+                                    <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Mix}"/>
+                                </StackPanel>
                             </StackPanel>
                         </StackPanel>
                     </Viewbox>
-                </StackPanel>
+                </Grid>
 
-                <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Grid.Column="2" Grid.RowSpan="2">
-                    <Button Click="button_pause_Click"  >
+                <StackPanel Orientation="Horizontal" Grid.Column="1" >
+                    <Button Style="{StaticResource Styles.Button.Icon.Rectangle}" Command="{Binding ClearCmd}">
+                        <iconPacks:PackIconMaterial Kind="Delete"/>
+                    </Button>
+                    <Button Command="{Binding PauseCmd}">
                         <Button.Style>
                             <Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon.Rectangle}">
-                                <Setter Property="Background" Value="{StaticResource Brushes.Activity}"/>
+                                <Setter Property="Background" Value="{StaticResource Brushes.Fault}"/>
                                 <Style.Triggers>
                                     <DataTrigger Binding="{Binding IsPaused}" Value="True">
-                                        <Setter Property="Background" Value="{StaticResource Brushes.NoAct}"/>
+                                        <Setter Property="Background" Value="{StaticResource Brushes.Pass}"/>
                                     </DataTrigger>
                                 </Style.Triggers>
                             </Style>
@@ -122,98 +129,54 @@
                             </iconPacks:PackIconMaterial.Style>
                         </iconPacks:PackIconMaterial>
                     </Button>
-                    <Button Click="button_save_Click" IsEnabled="{Binding IsPaused}" >
-                        <Button.Style>
-                            <Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon.Rectangle}">
-                                <Setter Property="Background" Value="{StaticResource Brushes.NoAct}"/>
-                                <Style.Triggers>
-                                    <DataTrigger Binding="{Binding IsPaused}" Value="True">
-                                        <Setter Property="Background" Value="{StaticResource Brushes.Activity}"/>
-                                    </DataTrigger>
-                                </Style.Triggers>
-                            </Style>
-                        </Button.Style>
-                        <iconPacks:PackIconMaterial Kind="Floppy" />
+                    <Button Style="{StaticResource Styles.Button.Icon.Rectangle}" IsEnabled="{Binding IsPaused}" Command="{Binding SaveCmd}">
+                        <iconPacks:PackIconMaterial Kind="Floppy"/>
                     </Button>
-                    <Button Click="button_analyze_Click" IsEnabled="{Binding IsPaused}" >
-                        <Button.Style>
-                            <Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon.Rectangle}">
-                                <Setter Property="Background" Value="{StaticResource Brushes.NoAct}"/>
-                                <Style.Triggers>
-                                    <DataTrigger Binding="{Binding IsPaused}" Value="True">
-                                        <Setter Property="Background" Value="{StaticResource Brushes.Activity}"/>
-                                    </DataTrigger>
-                                </Style.Triggers>
-                            </Style>
-                        </Button.Style>
-                        <iconPacks:PackIconMaterial Kind="ChartLine" />
+                    <Button Style="{StaticResource Styles.Button.Icon.Rectangle}" IsEnabled="{Binding IsPaused}" Command="{Binding AnalyzeCmd}">
+                        <iconPacks:PackIconMaterial Kind="ChartLine"/>
                     </Button>
                 </StackPanel>
             </Grid>
-
             <Grid Grid.Column="2" Grid.RowSpan="2" Panel.ZIndex="1" 
                   Margin="10,0" VerticalAlignment="Top" HorizontalAlignment="Right"
                   Background="{StaticResource SemiTransparentGreyBrush}" >
-                <Viewbox MaxHeight="50">
-                    <StackPanel Margin="{StaticResource ControlMargin}">
-                        <StackPanel.Resources>
-                            <Style TargetType="Viewbox">
-                                <Setter Property="Height" Value="25"/>
-                                <Setter Property="Width" Value="120"/>
-                                <Setter Property="HorizontalAlignment" Value="Left"/>
-                                <Setter Property="VerticalAlignment" Value="Top"/>
-                            </Style>
-                        </StackPanel.Resources>
-                        <StackPanel Orientation="Horizontal">
-                            <Viewbox >
-                                <StackPanel Orientation="Horizontal">
-                                    <TextBlock Style="{StaticResource TitleStyle}" 
+                <Viewbox MaxHeight="{StaticResource GraphInfo2RowMaxHeight}" Margin="{StaticResource ControlMargin}">
+                    <UniformGrid Columns="2">
+                        <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}" 
+                                    Background="{StaticResource TextBrush}">
+                            <TextBlock Style="{StaticResource TitleStyle}" 
                                            Foreground="{StaticResource WhiteBrush}"
-                                           Background="{StaticResource TextBrush}"
-                                           Opacity="0.8"
-                                           Text="平均: "
+                                           Text="平均"
                                            />
-                                    <TextBlock Style="{StaticResource ValueStyle}" 
+                            <TextBlock Style="{StaticResource ValueStyle}" 
                                            Foreground="{StaticResource WhiteBrush}"
-                                           Background="{StaticResource TextBrush}"
                                            Text="{Binding Average,StringFormat={}{0:F1}}" 
                                            />
-                                </StackPanel>
-                            </Viewbox>
-                            <Viewbox>
-                                <StackPanel Orientation="Horizontal">
-                                    <TextBlock Style="{StaticResource TitleStyle}" 
+                        </StackPanel>
+                        <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}" 
+                                    Background="{StaticResource TextBrush}">
+                            <TextBlock Style="{StaticResource TitleStyle}" 
                                            Foreground="{StaticResource WhiteBrush}"
-                                           Background="{StaticResource TextBrush}"
-                                           Opacity="0.8"
-                                           Text="3σ: " 
+                                           Text="2σ" 
                                            />
-                                    <TextBlock Style="{StaticResource ValueStyle}" 
+                            <TextBlock Style="{StaticResource ValueStyle}" 
                                            Foreground="{StaticResource WhiteBrush}"
-                                           Background="{StaticResource TextBrush}"
-                                           Text="{Binding Sigma3,StringFormat={}{0:F1}}"  
+                                           Text="{Binding Sigma2,StringFormat={}{0:F2}}"  
                                            />
-                                </StackPanel>
-                            </Viewbox>
                         </StackPanel>
-                        <StackPanel Orientation="Horizontal">
-                            <Viewbox >
-                                <StackPanel Orientation="Horizontal">
-                                    <TextBlock Style="{StaticResource TitleStyle}" Text="最大: "/>
-                                    <TextBlock Style="{StaticResource ValueStyle}" Text="{Binding Max,StringFormat={}{0:F1}}"/>
-                                </StackPanel>
-                            </Viewbox>
-                            <Viewbox >
-                                <StackPanel Orientation="Horizontal" >
-                                    <TextBlock Style="{StaticResource TitleStyle}" 
-                                               Text="最小: " />
-                                    <TextBlock Style="{StaticResource ValueStyle}" 
+                        <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}" >
+                            <TextBlock Style="{StaticResource TitleStyle}" 
+                                               Text="最大" />
+                            <TextBlock Style="{StaticResource ValueStyle}" 
+                                               Text="{Binding Max,StringFormat={}{0:F1}}"/>
+                        </StackPanel>
+                        <StackPanel Orientation="Horizontal" Margin="{StaticResource TextMargin}" >
+                            <TextBlock Style="{StaticResource TitleStyle}" 
+                                               Text="最小" />
+                            <TextBlock Style="{StaticResource ValueStyle}"  
                                                Text="{Binding Min,StringFormat={}{0:F1}}"/>
-                                </StackPanel>
-                            </Viewbox>
                         </StackPanel>
-
-                    </StackPanel>
+                    </UniformGrid>
                 </Viewbox>
             </Grid>
         </Grid>
diff --git a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml.cs b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml.cs
index 44798b5e07a749e07693834c44627b4b9fe66eb9..32867b74755dfc0b6061db9b26bba9d4c800ec17 100644
--- a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml.cs
+++ b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraph.xaml.cs
@@ -1,27 +1,6 @@
-using FLY.Thick.Base.Client;
-using FLY.Thick.Base.Common;
-using FLY.Thick.Base.IService;
-using MultiLayout.UiModule;
-using FObjBase;
-using LiveCharts;
-using Misc;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using FLY.Thick.Base.IService;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using FLY.Thick.Base.UI;
 using Unity;
 
 namespace FLY.Thick.Base.UI.UiModule
@@ -38,7 +17,7 @@ namespace FLY.Thick.Base.UI.UiModule
             InitializeComponent();
         }
         [InjectionMethod]
-        public void Init(int id, IUnityContainer container, 
+        public void Init(int id, IUnityContainer container,
             IFixService fixService, ITDGageService gageService)
         {
             //查找参数
@@ -68,27 +47,6 @@ namespace FLY.Thick.Base.UI.UiModule
             w.ShowDialog();
             viewModel.IsPaused = isPaused;
         }
-
-        private void button_pause_Click(object sender, RoutedEventArgs e)
-         {
-            viewModel.IsPaused = !viewModel.IsPaused;
-        }
-
-        private void button_save_Click(object sender, RoutedEventArgs e)
-        {
-            viewModel.PreSave();
-            WdSaveDatas w = new WdSaveDatas();
-            w.Init(viewModel);
-            w.ShowDialog();
-        }
-
-        private void button_analyze_Click(object sender, RoutedEventArgs e)
-        {
-            viewModel.GetDatas(out double intervalms, out List<double> datas);
-            PgFixAnalyze p = new PgFixAnalyze();
-            p.Init(intervalms, datas);
-            MultiLayout.FlyLayoutManager.NavigationService.Navigate(p);
-        }
     }
 
 
diff --git a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraphVm.cs b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraphVm.cs
index 0471cb80c19cc30d3414c3432f1105c9e5ea42e9..bfda5822256d1797d9c6ea82f580756ee6357619 100644
--- a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraphVm.cs
+++ b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/UiModule/FixGraph/FixGraphVm.cs
@@ -11,6 +11,7 @@ using System.Text;
 using System.Threading.Tasks;
 using FLY.Thick.Base.UI;
 using FLY.Thick.Base.Common;
+using CommunityToolkit.Mvvm.Input;
 
 namespace FLY.Thick.Base.UI.UiModule
 {
@@ -61,9 +62,9 @@ namespace FLY.Thick.Base.UI.UiModule
         /// </summary>
         public double Min { get; set; }
         /// <summary>
-        /// 3sigma
+        /// 2sigma
         /// </summary>
-        public double Sigma3 { get; set; }
+        public double Sigma2 { get; set; }
         #endregion
 
         #region 状态
@@ -92,6 +93,12 @@ namespace FLY.Thick.Base.UI.UiModule
         /// </summary>
         public bool IsADMode { get; private set; }
         #endregion
+
+        public RelayCommand PauseCmd { get; private set; }
+        public RelayCommand SaveCmd { get; private set; }
+        public RelayCommand AnalyzeCmd { get; private set; }
+        public RelayCommand ClearCmd { get; private set; }
+
         /// <summary>
         /// 真实接收的数据,与 Values 不一样, Values只是mDatas的一部分
         /// </summary>
@@ -119,6 +126,11 @@ namespace FLY.Thick.Base.UI.UiModule
         DynArea dynArea;
         public FixGraphVm()
         {
+            PauseCmd = new RelayCommand(Pause);
+            SaveCmd = new RelayCommand(Save);
+            AnalyzeCmd = new RelayCommand(Analyze);
+            ClearCmd = new RelayCommand(UpdateIsADMode);
+
             #region 与数据无关界面参数
             XFormatter = (x) =>
             {
@@ -147,7 +159,26 @@ namespace FLY.Thick.Base.UI.UiModule
 
             IsPaused = this.dynArea.ControllerState != CTRL_STATE.FIX;
         }
+        private void Analyze()
+        {
+            GetDatas(out double intervalms, out List<double> datas);
+            var p = new FLY.Thick.Base.UI.UiModule.PgFixAnalyze();
+            p.Init(intervalms, datas);
+            MultiLayout.FlyLayoutManager.NavigationService.Navigate(p);
+        }
 
+        private void Save()
+        {
+            PreSave();
+            WdSaveDatas w = new WdSaveDatas();
+            w.Init(this);
+            w.ShowDialog();
+        }
+
+        private void Pause()
+        {
+            IsPaused = !IsPaused;
+        }
         private void DynArea_PropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             if (e.PropertyName == nameof(DynArea.ControllerState)) {
@@ -426,7 +457,7 @@ namespace FLY.Thick.Base.UI.UiModule
                 Max = double.NaN;
                 Min = double.NaN;
                 Average = double.NaN;
-                Sigma3 = double.NaN;
+                Sigma2 = double.NaN;
                 AutoTarget = double.NaN;
                 return;
             }
@@ -434,7 +465,7 @@ namespace FLY.Thick.Base.UI.UiModule
             Max = mDatas.Max();
             Min = mDatas.Min();
             Average = mDatas.Average();
-            Sigma3 = mDatas.Sigma() * 3;
+            Sigma2 = mDatas.Sigma() * 2;
 
             if (mDatas.Count > 100)
             {
diff --git a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/WdPassword.xaml.cs b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/WdPassword.xaml.cs
index a14465e828c6b6778788f3d27b4d1778ab95f406..92802d942cb05e2c93cd5b426b50896b9a47664b 100644
--- a/Project.FLY.Thick.Base/FLY.Thick.Base.UI/WdPassword.xaml.cs
+++ b/Project.FLY.Thick.Base/FLY.Thick.Base.UI/WdPassword.xaml.cs
@@ -73,23 +73,23 @@ namespace FLY.Thick.Base.UI
         /// <returns></returns>
         public static bool Authorize(string uiName, out int pwLv, string msg=null)
         {
-            pwLv = 0;
-            //从容器获取
-            var container = Application.Current.Properties["container"] as IUnityContainer;
-            if (container == null)
-                return true;
+            return Authorize(uiName, 0, out pwLv, msg);
+        }
 
-            var passwordAuthorize = container.Resolve<PasswordAuthorize>();
-            int level = passwordAuthorize.GetLv(uiName);
-            if (level <= 0)
-                return true;
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="level">要求的级别</param>
+        /// <param name="pwLv">当密码正确时,密码的级别</param>
+        /// <returns></returns>
+        public static bool Authorize(int level, out int pwLv)
+        {
+            return Authorize(null, level, out pwLv);
+        }
 
-            WdPassword w = new WdPassword();
-            w.Init(passwordAuthorize, level, msg);
-            w.Owner = Application.Current.MainWindow;
-            bool ret = (bool)w.ShowDialog();
-            pwLv = w.PwLv;
-            return ret;
+        public static bool Authorize(int level, string msg)
+        {
+            return Authorize(null, level, out int pwLv, msg);
         }
 
         /// <summary>
@@ -98,7 +98,7 @@ namespace FLY.Thick.Base.UI
         /// <param name="level">要求的级别</param>
         /// <param name="pwLv">当密码正确时,密码的级别</param>
         /// <returns></returns>
-        public static bool Authorize(int level, out int pwLv)
+        public static bool Authorize(string uiName, int level, out int pwLv, string msg = null)
         {
             pwLv = 0;
             //从容器获取
@@ -107,11 +107,16 @@ namespace FLY.Thick.Base.UI
                 return true;
 
             var passwordAuthorize = container.Resolve<PasswordAuthorize>();
+
+            if (!string.IsNullOrEmpty(uiName))
+            {
+                level = passwordAuthorize.GetLv(uiName);
+            }
+
             if (level <= 0)
                 return true;
-
             WdPassword w = new WdPassword();
-            w.Init(passwordAuthorize, level);
+            w.Init(passwordAuthorize, level, msg);
             w.Owner = Application.Current.MainWindow;
             bool ret = (bool)w.ShowDialog();
             pwLv = w.PwLv;