Bladeren bron

compdfkit(win) - 优化侧边栏的弹出与收起

weixiangjie 1 jaar geleden
bovenliggende
commit
30832e7479

+ 3 - 3
Demo/Examples/Annotations/MainWindow.xaml

@@ -79,7 +79,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="LeftToolPanelButton_Click">
+                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" IsChecked="{Binding LeftToolPanelButtonIsChecked, Mode=TwoWay}" Click="LeftToolPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -143,7 +143,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="RightPanelButton_Click">
+                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" IsChecked="{Binding RightToolPanelButtonIsChecked, Mode=TwoWay}" Click="RightPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -156,7 +156,7 @@
                         </ToggleButton.ToolTip>
                     </ToggleButton>
 
-                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ViewSettingBtn_Click">
+                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding ViewSettingBtnIsChecked, Mode=TwoWay}" Background="Transparent" Click="ViewSettingBtn_Click">
                         <ToggleButton.Content>
                             <Path Stroke="#43474D" VerticalAlignment="Center" StrokeThickness="2">
                                 <Path.Data>

+ 22 - 9
Demo/Examples/Annotations/MainWindow.xaml.cs

@@ -134,6 +134,18 @@ namespace AnnotationViewControl
             botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
             annotationControl.SetBOTAContainer(botaBarControl);
             annotationControl.InitialPDFViewControl(annotationControl.PDFViewControl);
+            
+            panelState.PropertyChanged -= PanelState_PropertyChanged;
+            panelState.PropertyChanged += PanelState_PropertyChanged;
+        }
+        
+        private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "RightPanel")
+            {
+                OnPropertyChanged(nameof(RightToolPanelButtonIsChecked));
+                OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
+            }
         }
 
         private void PdfAnnotationControl_RefreshAnnotList(object sender, EventArgs e)
@@ -291,14 +303,7 @@ namespace AnnotationViewControl
             {
                 return;
             }
-            LeftToolPanelButtonIsChecked = false;
-            LeftToolPanelButton.IsChecked = false;
-            ViewSettingBtnIsChecked = false;
-            if(ViewSettingBtn != null)
-                ViewSettingBtn.IsChecked = false;
-            if(RightPanelButton != null)
-                RightPanelButton.IsChecked = false;
-            RightToolPanelButtonIsChecked = false;
+            ClearPanelState();
             
             if (currentMode == "Viewer")
             {
@@ -357,10 +362,18 @@ namespace AnnotationViewControl
                 ((sender as ToggleButton).IsChecked == true) ?
                     PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
         }
+        
+        private void ClearPanelState()
+        {
+            LeftToolPanelButtonIsChecked = false;
+            ViewSettingBtnIsChecked = false;
+            RightToolPanelButtonIsChecked = false;
+        }
 
         private void ExpandSearchBtn_Click(object sender, RoutedEventArgs e)
         {
-            annotationControl.ExpandLeftPanel(true);
+            LeftToolPanelButton.IsChecked = true;
+            LeftToolPanelButtonIsChecked = true;
             botaBarControl.SelectBotaTool(BOTATools.Search);
         }
 

+ 6 - 6
Demo/Examples/ContentEditor/MainWindow.xaml

@@ -94,7 +94,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="LeftToolPanelButton_Click">
+                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding LeftToolPanelButtonIsChecked, Mode=TwoWay}" Background="Transparent" Click="LeftToolPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -137,13 +137,13 @@
 
                 <ComboBox Name="ViewComboBox" Width="120" Height="26" Grid.Column="1" HorizontalAlignment="Center" FontSize="14" Foreground="#001A4E" SelectionChanged="ComboBox_SelectionChanged"
                          Style="{StaticResource ComboBoxStyle1}" >
-                    <ComboBoxItem>Viewer</ComboBoxItem>
-                    <ComboBoxItem IsSelected="True">Content Edit</ComboBoxItem>
+                    <ComboBoxItem IsSelected="True">Viewer</ComboBoxItem>
+                    <ComboBoxItem>Content Edit</ComboBoxItem>
                 </ComboBox>
 
                 <StackPanel Orientation="Horizontal" Grid.Column="2">
 
-                    <Button BorderThickness="0" Width="40" Height="40" Style="{StaticResource LightButtonStyle}" Background="Transparent" Focusable="False">
+                    <Button BorderThickness="0" Width="40" Height="40" Style="{StaticResource LightButtonStyle}" Background="Transparent" Focusable="False" Click="ExpandSearchBtn_Click">
                         <Button.Content>
                             <Path Fill="#43474D">
                                 <Path.Data>
@@ -160,7 +160,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="RightPanelButton_Click">
+                    <ToggleButton Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding RightToolPanelButtonIsChecked, Mode=TwoWay}" Background="Transparent" Click="RightPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -173,7 +173,7 @@
                         </ToggleButton.ToolTip>
                     </ToggleButton>
 
-                    <ToggleButton  Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ViewSettingBtn_Click">
+                    <ToggleButton  Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding ViewSettingBtnIsChecked, Mode=TwoWay}" Background="Transparent" Click="ViewSettingBtn_Click">
                         <ToggleButton.Content>
                             <Path Stroke="#43474D" VerticalAlignment="Center" StrokeThickness="2">
                                 <Path.Data>

+ 81 - 63
Demo/Examples/ContentEditor/MainWindow.xaml.cs

@@ -31,12 +31,14 @@ namespace ContentEditorViewControl
     /// </summary>
    public partial class MainWindow: Window, INotifyPropertyChanged
     {
+        private PanelState panelState = PanelState.GetInstance();
         private CPDFDisplaySettingsControl displaySettingsControl = new CPDFDisplaySettingsControl();
         private RegularViewerControl regularViewerControl = new RegularViewerControl();
         private PDFViewControl pdfViewer;
         private PDFViewControl passwordViewer;
         private ContentEditControl contentEditControl = new ContentEditControl();
         private CPDFBOTABarControl botaBarControl = new CPDFBOTABarControl(BOTATools.Thumbnail | BOTATools.Outline | BOTATools.Bookmark | BOTATools.Search | BOTATools.Annotation);
+        private string currentMode = "Viewer";
         
         private bool _canSave = false;
         public bool CanSave
@@ -50,6 +52,42 @@ namespace ContentEditorViewControl
             }
         }
         
+        public bool LeftToolPanelButtonIsChecked
+        {
+            get => panelState.IsLeftPanelExpand;
+            set
+            {
+                panelState.IsLeftPanelExpand = value;
+                OnPropertyChanged();
+            }
+        }
+        
+        public bool ViewSettingBtnIsChecked
+        {
+            get
+            {
+                return (panelState.RightPanel == PanelState.RightPanelState.ViewSettings);
+            }
+            set
+            {
+                panelState.RightPanel = (value) ? PanelState.RightPanelState.ViewSettings : PanelState.RightPanelState.None;
+                OnPropertyChanged();
+            }
+        }
+        
+        public bool RightToolPanelButtonIsChecked
+        {
+            get
+            {
+                return (panelState.RightPanel == PanelState.RightPanelState.PropertyPanel);
+            }
+            set
+            {
+                panelState.RightPanel = (value) ? PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
+                OnPropertyChanged();
+            }
+        }
+        
         public MainWindow()
         {
             InitializeComponent();
@@ -64,13 +102,6 @@ namespace ContentEditorViewControl
             pdfViewer.PDFView.InitDocument(defaultFilePath);
             LoadDocument();
         }
-        
-        private void LoadCustomControl()
-        {
-            regularViewerControl.PdfViewControl = pdfViewer;
-            regularViewerControl.PdfViewControl.PDFView.SetMouseMode(MouseModes.Viewer);
-            regularViewerControl.SetDisplaySettingsControl(displaySettingsControl);
-        }
 
         private void LoadDocument()
         {
@@ -98,6 +129,7 @@ namespace ContentEditorViewControl
             PasswordUI.Canceled += PasswordUI_Canceled;
             PasswordUI.Confirmed += PasswordUI_Confirmed;
 
+            ViewComboBox.SelectedIndex = 1;
             contentEditControl.PdfViewControl.PDFView.ChangeFitMode(FitMode.FitWidth);
             CPDFSaclingControl.InitWithPDFViewer(contentEditControl.PdfViewControl.PDFView);
             CPDFSaclingControl.SetZoomTextBoxText(string.Format("{0}", (int)(contentEditControl.PdfViewControl.PDFView.ZoomFactor * 100)));
@@ -107,7 +139,17 @@ namespace ContentEditorViewControl
             botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
             contentEditControl.SetBOTAContainer(botaBarControl);
             displaySettingsControl.InitWithPDFViewer(contentEditControl.PdfViewControl.PDFView);
-            LoadCustomControl();
+            panelState.PropertyChanged -= PanelState_PropertyChanged;
+            panelState.PropertyChanged += PanelState_PropertyChanged;
+        }
+        
+        private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "RightPanel")
+            {
+                OnPropertyChanged(nameof(RightToolPanelButtonIsChecked));
+                OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
+            }
         }
 
         private void PdfContentEditControlRefreshAnnotList(object sender, EventArgs e)
@@ -249,28 +291,34 @@ namespace ContentEditorViewControl
 
         private void LeftToolPanelButton_Click(object sender, RoutedEventArgs e)
         {
-            ToggleButton expandBtn = sender as ToggleButton;
-            if (expandBtn != null)
-            {
-                bool isExpand = expandBtn.IsChecked == true;
-                contentEditControl.ExpandLeftPanel(isExpand);
-            }
+            panelState.IsLeftPanelExpand = (sender as ToggleButton).IsChecked == true;
         }
 
         private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             var item = (sender as ComboBox).SelectedItem as ComboBoxItem;
+            if (item.Content as string == currentMode)
+            {
+                return;
+            }
+            ClearPanelState();
+            
+            if (currentMode == "Viewer")
+            {
+                regularViewerControl.ClearViewerControl();
+            }
+            else if(currentMode == "Content Edit")
+            {
+                contentEditControl.ClearViewerControl();
+            }
             if ((string)item.Content == "Viewer")
             {
                 if (regularViewerControl.PdfViewControl != null && regularViewerControl.PdfViewControl.PDFView != null)
                 {
-                    contentEditControl.ClearViewerControl();
                     PDFGrid.Child = regularViewerControl;
                     regularViewerControl.PdfViewControl.PDFView.SetMouseMode(MouseModes.Viewer);
                     regularViewerControl.PdfViewControl = pdfViewer;
                     regularViewerControl.InitWithPDFViewer(pdfViewer.PDFView);
-                    regularViewerControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
-                    regularViewerControl.OnCanSaveChanged += ControlOnCanSaveChanged;
                     regularViewerControl.SetBOTAContainer(botaBarControl);
                     regularViewerControl.SetDisplaySettingsControl(displaySettingsControl);
                 }
@@ -279,12 +327,9 @@ namespace ContentEditorViewControl
             {
                 if (contentEditControl.PdfViewControl != null && contentEditControl.PdfViewControl.PDFView != null)
                 {
-                    regularViewerControl.ClearViewerControl();
                     pdfViewer.PDFView?.SetPDFEditType(CPDFEditType.EditText | CPDFEditType.EditImage);
                     pdfViewer.PDFView?.SetPDFEditCreateType(CPDFEditType.None);
                     pdfViewer.PDFView?.SetMouseMode(MouseModes.PDFEdit);
-                    pdfViewer.PDFView?.ReloadDocument();
-
                     pdfViewer.PDFView?.SetSplitMode(SplitMode.None);
 
                     PDFGrid.Child = contentEditControl;
@@ -297,6 +342,7 @@ namespace ContentEditorViewControl
                     contentEditControl.SetDisplaySettingsControl(displaySettingsControl);
                 }
             }
+            currentMode = item.Content as string;
         }
 
         private void PageInfoBtn_Click(object sender, RoutedEventArgs e)
@@ -309,59 +355,31 @@ namespace ContentEditorViewControl
 
         private void ViewSettingBtn_Click(object sender, RoutedEventArgs e)
         {
-            ShowViewSettings();
+            panelState.RightPanel =
+                ((sender as ToggleButton).IsChecked == true) ?
+                    PanelState.RightPanelState.ViewSettings : PanelState.RightPanelState.None;
         }
-
-        private void ShowViewSettings()
+        
+        private void RightPanelButton_Click(object sender, RoutedEventArgs e)
         {
-            if (ViewSettingBtn != null)
-            {
-                if (ViewSettingBtn.IsChecked == true)
-                {
-                    contentEditControl.SetViewSettings(Visibility.Visible, displaySettingsControl); 
-                    if ((bool)RightPanelButton.IsChecked)
-                    {
-                        RightPanelButton.IsChecked = false;
-                    }
-                }
-                else
-                {
-                    contentEditControl.SetViewSettings(Visibility.Collapsed); 
-                }
-            }
+            panelState.RightPanel =
+                ((sender as ToggleButton).IsChecked == true) ?
+                    PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
         }
-        private void RightPanelButton_Click(object sender, RoutedEventArgs e)
+        
+        private void ClearPanelState()
         {
-            ControlRightPanel();
+            LeftToolPanelButtonIsChecked = false;
+            ViewSettingBtnIsChecked = false;
+            RightToolPanelButtonIsChecked = false;
         }
 
         private void ExpandSearchBtn_Click(object sender, RoutedEventArgs e)
         {
-            contentEditControl.ExpandLeftPanel(true);
+            LeftToolPanelButton.IsChecked = true;
+            LeftToolPanelButtonIsChecked = true;
             botaBarControl.SelectBotaTool(BOTATools.Search);
         }
-        
-        private void ControlRightPanel()
-        { 
-            if (RightPanelButton != null)
-            {
-                if (RightPanelButton.IsChecked == true)
-                {
-                    if (contentEditControl.pdfContentEditControl != null)
-                    {
-                        contentEditControl.ExpandRightPropertyPanel(contentEditControl.pdfContentEditControl, Visibility.Visible);
-                        if ((bool)ViewSettingBtn.IsChecked)
-                        {
-                            ViewSettingBtn.IsChecked = false;
-                        }
-                    }
-                }
-                else
-                {
-                    contentEditControl.ExpandRightPropertyPanel(null, Visibility.Collapsed);
-                }
-            }
-        }
 
         #region Save file
         /// <summary>

+ 3 - 3
Demo/Examples/DigitalSignature/MainWindow.xaml

@@ -80,7 +80,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="LeftToolPanelButton_Click">
+                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" IsChecked="{Binding LeftToolPanelButtonIsChecked, Mode=TwoWay}" Click="LeftToolPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -142,7 +142,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="RightPanelButton_Click">
+                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding RightToolPanelButtonIsChecked, Mode=TwoWay}" Background="Transparent" Click="RightPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -155,7 +155,7 @@
                         </ToggleButton.ToolTip>
                     </ToggleButton>
 
-                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ViewSettingBtn_Click">
+                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" IsChecked="{Binding ViewSettingBtnIsChecked, Mode=TwoWay}" Click="ViewSettingBtn_Click">
                         <ToggleButton.Content>
                             <Path Stroke="#43474D" VerticalAlignment="Center" StrokeThickness="2">
                                 <Path.Data>

+ 20 - 5
Demo/Examples/DigitalSignature/MainWindow.xaml.cs

@@ -224,6 +224,18 @@ namespace DigitalSignature
             CPDFSaclingControl.InitWithPDFViewer(pdfViewer.PDFView);
             
             digitalSignatureControl.InitWithPDFViewer(pdfViewer.PDFView);
+            
+            panelState.PropertyChanged -= PanelState_PropertyChanged;
+            panelState.PropertyChanged += PanelState_PropertyChanged;
+        }
+        
+        private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "RightPanel")
+            {
+                OnPropertyChanged(nameof(RightToolPanelButtonIsChecked));
+                OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
+            }
         }
 
         public void BotaControlOnDeleteSignatureEvent(object sender, EventArgs e)
@@ -308,9 +320,7 @@ namespace DigitalSignature
             {
                 return;
             }
-            LeftToolPanelButtonIsChecked = false;
-            LeftToolPanelButton.IsChecked = false;
-            ViewSettingBtnIsChecked = false;
+            ClearPanelState();
             if(ViewSettingBtn != null)
                 ViewSettingBtn.IsChecked = false;
             if(RightPanelButton != null)
@@ -357,14 +367,12 @@ namespace DigitalSignature
         private void ViewAllSignatures(object sender, EventArgs e)
         {
             LeftToolPanelButton.IsChecked = true;
-            panelState.IsLeftPanelExpand = true;
             botaBarControl.SelectBotaTool(BOTATools.Signature);
         }
 
         private void ExpandSearchBtn_Click(object sender, RoutedEventArgs e)
         {
             LeftToolPanelButton.IsChecked = true;
-            panelState.IsLeftPanelExpand = true;
             botaBarControl.SelectBotaTool(BOTATools.Search);
         }
 
@@ -381,6 +389,13 @@ namespace DigitalSignature
                 ((sender as ToggleButton).IsChecked == true) ?
                     PanelState.RightPanelState.ViewSettings : PanelState.RightPanelState.None;
         }
+        
+        private void ClearPanelState()
+        {
+            LeftToolPanelButtonIsChecked = false;
+            ViewSettingBtnIsChecked = false;
+            RightToolPanelButtonIsChecked = false;
+        }
 
         private void PageInfoBtn_Click(object sender, RoutedEventArgs e)
         {

+ 3 - 3
Demo/Examples/Forms/MainWindow.xaml

@@ -79,7 +79,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="LeftToolPanelButton_Click">
+                    <ToggleButton Name="LeftToolPanelButton" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding LeftToolPanelButtonIsChecked, Mode=TwoWay}" Background="Transparent" Click="LeftToolPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -143,7 +143,7 @@
                         </Button.ToolTip>
                     </Button>
 
-                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="RightPanelButton_Click">
+                    <ToggleButton  x:Name="RightPanelButton" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding RightToolPanelButtonIsChecked, Mode=TwoWay}" Background="Transparent" Click="RightPanelButton_Click">
                         <ToggleButton.Content>
                             <Path Fill="#43474D" Width="30" Height="30">
                                 <Path.Data>
@@ -156,7 +156,7 @@
                         </ToggleButton.ToolTip>
                     </ToggleButton>
 
-                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ViewSettingBtn_Click">
+                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding ViewSettingBtnIsChecked, Mode=TwoWay}" Background="Transparent" Click="ViewSettingBtn_Click">
                         <ToggleButton.Content>
                             <Path Stroke="#43474D" VerticalAlignment="Center" StrokeThickness="2">
                                 <Path.Data>

+ 34 - 10
Demo/Examples/Forms/MainWindow.xaml.cs

@@ -57,6 +57,19 @@ namespace FormViewControl
             }
         }
         
+        public bool RightToolPanelButtonIsChecked
+        {
+            get
+            {
+                return (panelState.RightPanel == PanelState.RightPanelState.PropertyPanel);
+            }
+            set
+            {
+                panelState.RightPanel = (value) ? PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
+                OnPropertyChanged();
+            }
+        }
+        
         public bool ViewSettingBtnIsChecked
         {
             get
@@ -121,6 +134,18 @@ namespace FormViewControl
             botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
             formControl.SetBOTAContainer(botaBarControl);
             formControl.InitialPDFViewControl(formControl.PdfViewControl);
+            
+            panelState.PropertyChanged -= PanelState_PropertyChanged;
+            panelState.PropertyChanged += PanelState_PropertyChanged;
+        }
+        
+        private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "RightPanel")
+            {
+                OnPropertyChanged(nameof(RightToolPanelButtonIsChecked));
+                OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
+            }
         }
 
         private void PdfFormControlRefreshAnnotList(object sender, EventArgs e)
@@ -265,15 +290,8 @@ namespace FormViewControl
             {
                 return;
             }
-            LeftToolPanelButtonIsChecked = false;
-            LeftToolPanelButton.IsChecked = false;
-            ViewSettingBtnIsChecked = false;
-            if(ViewSettingBtn != null)
-                ViewSettingBtn.IsChecked = false;
-            if(RightPanelButton != null)
-                RightPanelButton.IsChecked = false;
-
-            panelState.IsLeftPanelExpand = false;
+            ClearPanelState();
+            
             if (currentMode == "Viewer")
             {
                 regularViewerControl.ClearViewerControl();
@@ -334,9 +352,15 @@ namespace FormViewControl
         private void ExpandSearchBtn_Click(object sender, RoutedEventArgs e)
         {
             LeftToolPanelButton.IsChecked = true;
-            panelState.IsLeftPanelExpand = true;
             botaBarControl.SelectBotaTool(BOTATools.Search);
         }
+        
+        private void ClearPanelState()
+        {
+            LeftToolPanelButtonIsChecked = false;
+            ViewSettingBtnIsChecked = false;
+            RightToolPanelButtonIsChecked = false;
+        }
 
         #region Save file
         /// <summary>