From e0ae101ff4ca160c5b88ac2c642816f17ca4ce07 Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Thu, 9 Jan 2025 15:14:03 +0800
Subject: [PATCH] Adjust UI for desktop

---
 v2rayN/ServiceLib/Resx/ResUI.Designer.cs      |   2 +-
 v2rayN/ServiceLib/Resx/ResUI.resx             |   2 +-
 v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx     |   2 +-
 v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx     |   2 +-
 .../ViewModels/StatusBarViewModel.cs          |  17 --
 v2rayN/v2rayN.Desktop/App.axaml               |  26 +--
 v2rayN/v2rayN.Desktop/Common/UI.cs            |  26 +--
 .../Views/OptionSettingWindow.axaml           | 180 +++++++++---------
 .../Views/RoutingRuleDetailsWindow.axaml      |   4 +-
 v2rayN/v2rayN/Views/OptionSettingWindow.xaml  | 172 +++++++++--------
 10 files changed, 200 insertions(+), 233 deletions(-)

diff --git a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs
index d0422079..abe53603 100644
--- a/v2rayN/ServiceLib/Resx/ResUI.Designer.cs
+++ b/v2rayN/ServiceLib/Resx/ResUI.Designer.cs
@@ -1348,7 +1348,7 @@ namespace ServiceLib.Resx {
         }
         
         /// <summary>
-        ///   查找类似 Import Advanced Rules 的本地化字符串。
+        ///   查找类似 Import Rules 的本地化字符串。
         /// </summary>
         public static string menuRoutingAdvancedImportRules {
             get {
diff --git a/v2rayN/ServiceLib/Resx/ResUI.resx b/v2rayN/ServiceLib/Resx/ResUI.resx
index 96a78013..82b27147 100644
--- a/v2rayN/ServiceLib/Resx/ResUI.resx
+++ b/v2rayN/ServiceLib/Resx/ResUI.resx
@@ -842,7 +842,7 @@
     <value>Add</value>
   </data>
   <data name="menuRoutingAdvancedImportRules" xml:space="preserve">
-    <value>Import Advanced Rules</value>
+    <value>Import Rules</value>
   </data>
   <data name="menuRoutingAdvancedRemove" xml:space="preserve">
     <value>Remove selected (Delete)</value>
diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx
index 18a5f149..6807b6de 100644
--- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx
+++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx
@@ -842,7 +842,7 @@
     <value>添加规则集</value>
   </data>
   <data name="menuRoutingAdvancedImportRules" xml:space="preserve">
-    <value>一键导入高级规则</value>
+    <value>一键导入规则集</value>
   </data>
   <data name="menuRoutingAdvancedRemove" xml:space="preserve">
     <value>移除所选规则 (Delete)</value>
diff --git a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx
index 15baf315..27d7207b 100644
--- a/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx
+++ b/v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx
@@ -843,7 +843,7 @@
     <value>新增規則集</value>
   </data>
   <data name="menuRoutingAdvancedImportRules" xml:space="preserve">
-    <value>一鍵匯入進階規則</value>
+    <value>一鍵匯入規則集</value>
   </data>
   <data name="menuRoutingAdvancedRemove" xml:space="preserve">
     <value>移除所選規則 (Delete)</value>
diff --git a/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs b/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs
index a2b89a9d..80e3f287 100644
--- a/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs
+++ b/v2rayN/ServiceLib/ViewModels/StatusBarViewModel.cs
@@ -48,18 +48,6 @@ namespace ServiceLib.ViewModels
         [Reactive]
         public bool BlSystemProxyPac { get; set; }
 
-        [Reactive]
-        public bool BlNotSystemProxyClear { get; set; }
-
-        [Reactive]
-        public bool BlNotSystemProxySet { get; set; }
-
-        [Reactive]
-        public bool BlNotSystemProxyNothing { get; set; }
-
-        [Reactive]
-        public bool BlNotSystemProxyPac { get; set; }
-
         public ReactiveCommand<Unit, Unit> SystemProxyClearCmd { get; }
         public ReactiveCommand<Unit, Unit> SystemProxySetCmd { get; }
         public ReactiveCommand<Unit, Unit> SystemProxyNothingCmd { get; }
@@ -333,11 +321,6 @@ namespace ServiceLib.ViewModels
             BlSystemProxyNothing = (type == ESysProxyType.Unchanged);
             BlSystemProxyPac = (type == ESysProxyType.Pac);
 
-            BlNotSystemProxyClear = !BlSystemProxyClear;
-            BlNotSystemProxySet = !BlSystemProxySet;
-            BlNotSystemProxyNothing = !BlSystemProxyNothing;
-            BlNotSystemProxyPac = !BlSystemProxyPac;
-
             if (blChange)
             {
                 _updateView?.Invoke(EViewAction.DispatcherRefreshIcon, null);
diff --git a/v2rayN/v2rayN.Desktop/App.axaml b/v2rayN/v2rayN.Desktop/App.axaml
index 6a9d7d51..7428d63d 100644
--- a/v2rayN/v2rayN.Desktop/App.axaml
+++ b/v2rayN/v2rayN.Desktop/App.axaml
@@ -32,32 +32,18 @@
                         <NativeMenuItem
                             Command="{Binding SystemProxyClearCmd}"
                             Header="{x:Static resx:ResUI.menuSystemProxyClear}"
-                            IsVisible="{Binding BlNotSystemProxyClear}" />
-                        <NativeMenuItem
-                            Command="{Binding SystemProxyClearCmd}"
-                            Header="{x:Static resx:ResUI.menuSystemProxyClear}"
-                            Icon="/Assets/NotifyIcon1.ico"
-                            IsVisible="{Binding BlSystemProxyClear}" />
-
+                            IsChecked="{Binding BlSystemProxyClear}"
+                            ToggleType="Radio" />
                         <NativeMenuItem
                             Command="{Binding SystemProxySetCmd}"
                             Header="{x:Static resx:ResUI.menuSystemProxySet}"
-                            IsVisible="{Binding BlNotSystemProxySet}" />
-                        <NativeMenuItem
-                            Command="{Binding SystemProxySetCmd}"
-                            Header="{x:Static resx:ResUI.menuSystemProxySet}"
-                            Icon="/Assets/NotifyIcon2.ico"
-                            IsVisible="{Binding BlSystemProxySet}" />
-
+                            IsChecked="{Binding BlSystemProxySet}"
+                            ToggleType="Radio" />
                         <NativeMenuItem
                             Command="{Binding SystemProxyNothingCmd}"
                             Header="{x:Static resx:ResUI.menuSystemProxyNothing}"
-                            IsVisible="{Binding BlNotSystemProxyNothing}" />
-                        <NativeMenuItem
-                            Command="{Binding SystemProxyNothingCmd}"
-                            Header="{x:Static resx:ResUI.menuSystemProxyNothing}"
-                            Icon="/Assets/NotifyIcon3.ico"
-                            IsVisible="{Binding BlSystemProxyNothing}" />
+                            IsChecked="{Binding BlSystemProxyNothing}"
+                            ToggleType="Radio" />
                         <NativeMenuItemSeparator />
                         <NativeMenuItem Click="MenuAddServerViaClipboardClick" Header="{x:Static resx:ResUI.menuAddServerViaClipboard}" />
                         <NativeMenuItem Header="{x:Static resx:ResUI.menuAddServerViaScan}" IsVisible="False" />
diff --git a/v2rayN/v2rayN.Desktop/Common/UI.cs b/v2rayN/v2rayN.Desktop/Common/UI.cs
index 0f72c55a..74cfa6eb 100644
--- a/v2rayN/v2rayN.Desktop/Common/UI.cs
+++ b/v2rayN/v2rayN.Desktop/Common/UI.cs
@@ -17,13 +17,11 @@ namespace v2rayN.Desktop.Common
 
         public static async Task<string?> OpenFileDialog(Window owner, FilePickerFileType? filter)
         {
-            var topLevel = TopLevel.GetTopLevel(owner);
-            if (topLevel == null)
-            {
-                return null;
-            }
+            var sp = GetStorageProvider(owner);
+            if (sp is null) return null;
+          
             // Start async operation to open the dialog.
-            var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
+            var files = await sp.OpenFilePickerAsync(new FilePickerOpenOptions
             {
                 AllowMultiple = false,
                 FileTypeFilter = filter is null ? [FilePickerFileTypes.All, FilePickerFileTypes.ImagePng] : [filter]
@@ -34,17 +32,21 @@ namespace v2rayN.Desktop.Common
 
         public static async Task<string?> SaveFileDialog(Window owner, string filter)
         {
-            var topLevel = TopLevel.GetTopLevel(owner);
-            if (topLevel == null)
-            {
-                return null;
-            }
+            var sp = GetStorageProvider(owner);
+            if (sp is null) return null;
+
             // Start async operation to open the dialog.
-            var files = await topLevel.StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions
+            var files = await sp.SaveFilePickerAsync(new FilePickerSaveOptions
             {
             });
 
             return files?.TryGetLocalPath();
         }
+
+        private static IStorageProvider? GetStorageProvider(Window owner)
+        {
+            var topLevel = TopLevel.GetTopLevel(owner);
+            return topLevel?.StorageProvider;
+        }
     }
 }
\ No newline at end of file
diff --git a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml
index b240ed4b..890e6702 100644
--- a/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml
+++ b/v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml
@@ -115,7 +115,7 @@
                             HorizontalAlignment="Left"
                             Classes="Margin8"
                             SelectionMode="Multiple"
-                            Theme="{DynamicResource PureCardRadioGroupListBox}" />
+                            Theme="{DynamicResource CardCheckGroupListBox}" />
 
                         <TextBlock
                             Grid.Row="6"
@@ -714,102 +714,100 @@
             </TabItem>
 
             <TabItem Header="{x:Static resx:ResUI.TbSettingsTunMode}">
-                <DockPanel Classes="Margin8">
-                    <Grid
+                <Grid
+                    Classes="Margin8"
+                    ColumnDefinitions="Auto,Auto,Auto"
+                    DockPanel.Dock="Top"
+                    RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
+
+                    <TextBlock
+                        Grid.Row="2"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
                         Classes="Margin8"
-                        ColumnDefinitions="Auto,Auto,Auto"
-                        DockPanel.Dock="Top"
-                        RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
+                        Text="Strict Route" />
+                    <ToggleSwitch
+                        x:Name="togStrictRoute"
+                        Grid.Row="2"
+                        Grid.Column="1"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
 
-                        <TextBlock
-                            Grid.Row="2"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="Strict Route" />
-                        <ToggleSwitch
-                            x:Name="togStrictRoute"
-                            Grid.Row="2"
-                            Grid.Column="1"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
+                    <TextBlock
+                        Grid.Row="3"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="Stack" />
+                    <ComboBox
+                        x:Name="cmbStack"
+                        Grid.Row="3"
+                        Grid.Column="1"
+                        Width="200"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
 
-                        <TextBlock
-                            Grid.Row="3"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="Stack" />
-                        <ComboBox
-                            x:Name="cmbStack"
-                            Grid.Row="3"
-                            Grid.Column="1"
-                            Width="200"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
+                    <TextBlock
+                        Grid.Row="4"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="Mtu" />
+                    <ComboBox
+                        x:Name="cmbMtu"
+                        Grid.Row="4"
+                        Grid.Column="1"
+                        Width="200"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
 
-                        <TextBlock
-                            Grid.Row="4"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="Mtu" />
-                        <ComboBox
-                            x:Name="cmbMtu"
-                            Grid.Row="4"
-                            Grid.Column="1"
-                            Width="200"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
+                    <TextBlock
+                        Grid.Row="5"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="{x:Static resx:ResUI.TbSettingsEnableExInbound}" />
+                    <ToggleSwitch
+                        x:Name="togEnableExInbound"
+                        Grid.Row="5"
+                        Grid.Column="1"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
 
-                        <TextBlock
-                            Grid.Row="5"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="{x:Static resx:ResUI.TbSettingsEnableExInbound}" />
-                        <ToggleSwitch
-                            x:Name="togEnableExInbound"
-                            Grid.Row="5"
-                            Grid.Column="1"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
+                    <TextBlock
+                        Grid.Row="6"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="{x:Static resx:ResUI.TbSettingsEnableIPv6Address}" />
+                    <ToggleSwitch
+                        x:Name="togEnableIPv6Address"
+                        Grid.Row="6"
+                        Grid.Column="1"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
 
-                        <TextBlock
-                            Grid.Row="6"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="{x:Static resx:ResUI.TbSettingsEnableIPv6Address}" />
-                        <ToggleSwitch
-                            x:Name="togEnableIPv6Address"
-                            Grid.Row="6"
-                            Grid.Column="1"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
-
-                        <TextBlock
-                            Grid.Row="7"
-                            Grid.Column="0"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="{x:Static resx:ResUI.TbSettingsLinuxSudoPassword}" />
-                        <TextBox
-                            x:Name="txtLinuxSudoPassword"
-                            Grid.Row="7"
-                            Grid.Column="1"
-                            Width="200"
-                            HorizontalAlignment="Left"
-                            Classes="Margin8" />
-                        <TextBlock
-                            Grid.Row="7"
-                            Grid.Column="2"
-                            VerticalAlignment="Center"
-                            Classes="Margin8"
-                            Text="{x:Static resx:ResUI.TbSettingsLinuxSudoPasswordTip}"
-                            TextWrapping="Wrap" />
-                    </Grid>
-                </DockPanel>
+                    <TextBlock
+                        Grid.Row="7"
+                        Grid.Column="0"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="{x:Static resx:ResUI.TbSettingsLinuxSudoPassword}" />
+                    <TextBox
+                        x:Name="txtLinuxSudoPassword"
+                        Grid.Row="7"
+                        Grid.Column="1"
+                        Width="200"
+                        HorizontalAlignment="Left"
+                        Classes="Margin8" />
+                    <TextBlock
+                        Grid.Row="7"
+                        Grid.Column="2"
+                        VerticalAlignment="Center"
+                        Classes="Margin8"
+                        Text="{x:Static resx:ResUI.TbSettingsLinuxSudoPasswordTip}"
+                        TextWrapping="Wrap" />
+                </Grid>
             </TabItem>
 
             <TabItem Header="{x:Static resx:ResUI.TbSettingsCoreType}">
diff --git a/v2rayN/v2rayN.Desktop/Views/RoutingRuleDetailsWindow.axaml b/v2rayN/v2rayN.Desktop/Views/RoutingRuleDetailsWindow.axaml
index b3c47105..62cdd0bf 100644
--- a/v2rayN/v2rayN.Desktop/Views/RoutingRuleDetailsWindow.axaml
+++ b/v2rayN/v2rayN.Desktop/Views/RoutingRuleDetailsWindow.axaml
@@ -95,7 +95,7 @@
                 HorizontalAlignment="Left"
                 Classes="Margin8"
                 SelectionMode="Multiple"
-                Theme="{DynamicResource PureCardRadioGroupListBox}" />
+                Theme="{DynamicResource CardCheckGroupListBox}" />
 
             <TextBlock
                 Grid.Row="4"
@@ -109,7 +109,7 @@
                 Grid.Column="1"
                 Classes="Margin8"
                 SelectionMode="Multiple"
-                Theme="{DynamicResource PureCardRadioGroupListBox}" />
+                Theme="{DynamicResource CardCheckGroupListBox}" />
             <TextBlock
                 Grid.Row="4"
                 Grid.Column="2"
diff --git a/v2rayN/v2rayN/Views/OptionSettingWindow.xaml b/v2rayN/v2rayN/Views/OptionSettingWindow.xaml
index 213bb5de..a6f21c58 100644
--- a/v2rayN/v2rayN/Views/OptionSettingWindow.xaml
+++ b/v2rayN/v2rayN/Views/OptionSettingWindow.xaml
@@ -997,98 +997,96 @@
             </TabItem>
 
             <TabItem Header="{x:Static resx:ResUI.TbSettingsTunMode}">
-                <DockPanel Margin="{StaticResource Margin8}">
-                    <Grid Margin="{StaticResource Margin8}" DockPanel.Dock="Top">
-                        <Grid.RowDefinitions>
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                            <RowDefinition Height="Auto" />
-                        </Grid.RowDefinitions>
-                        <Grid.ColumnDefinitions>
-                            <ColumnDefinition Width="Auto" />
-                            <ColumnDefinition Width="Auto" />
-                            <ColumnDefinition Width="Auto" />
-                        </Grid.ColumnDefinitions>
+                <Grid Margin="{StaticResource Margin8}" DockPanel.Dock="Top">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                        <RowDefinition Height="Auto" />
+                    </Grid.RowDefinitions>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="Auto" />
+                        <ColumnDefinition Width="Auto" />
+                        <ColumnDefinition Width="Auto" />
+                    </Grid.ColumnDefinitions>
 
-                        <TextBlock
-                            Grid.Row="2"
-                            Grid.Column="0"
-                            Margin="{StaticResource Margin8}"
-                            VerticalAlignment="Center"
-                            Style="{StaticResource ToolbarTextBlock}"
-                            Text="Strict Route" />
-                        <ToggleButton
-                            x:Name="togStrictRoute"
-                            Grid.Row="2"
-                            Grid.Column="1"
-                            Margin="{StaticResource Margin8}"
-                            HorizontalAlignment="Left" />
+                    <TextBlock
+                        Grid.Row="2"
+                        Grid.Column="0"
+                        Margin="{StaticResource Margin8}"
+                        VerticalAlignment="Center"
+                        Style="{StaticResource ToolbarTextBlock}"
+                        Text="Strict Route" />
+                    <ToggleButton
+                        x:Name="togStrictRoute"
+                        Grid.Row="2"
+                        Grid.Column="1"
+                        Margin="{StaticResource Margin8}"
+                        HorizontalAlignment="Left" />
 
-                        <TextBlock
-                            Grid.Row="3"
-                            Grid.Column="0"
-                            Margin="{StaticResource Margin8}"
-                            VerticalAlignment="Center"
-                            Style="{StaticResource ToolbarTextBlock}"
-                            Text="Stack" />
-                        <ComboBox
-                            x:Name="cmbStack"
-                            Grid.Row="3"
-                            Grid.Column="1"
-                            Width="200"
-                            Margin="{StaticResource Margin8}"
-                            HorizontalAlignment="Left"
-                            Style="{StaticResource DefComboBox}" />
+                    <TextBlock
+                        Grid.Row="3"
+                        Grid.Column="0"
+                        Margin="{StaticResource Margin8}"
+                        VerticalAlignment="Center"
+                        Style="{StaticResource ToolbarTextBlock}"
+                        Text="Stack" />
+                    <ComboBox
+                        x:Name="cmbStack"
+                        Grid.Row="3"
+                        Grid.Column="1"
+                        Width="200"
+                        Margin="{StaticResource Margin8}"
+                        HorizontalAlignment="Left"
+                        Style="{StaticResource DefComboBox}" />
 
-                        <TextBlock
-                            Grid.Row="4"
-                            Grid.Column="0"
-                            Margin="{StaticResource Margin8}"
-                            VerticalAlignment="Center"
-                            Style="{StaticResource ToolbarTextBlock}"
-                            Text="Mtu" />
-                        <ComboBox
-                            x:Name="cmbMtu"
-                            Grid.Row="4"
-                            Grid.Column="1"
-                            Width="200"
-                            Margin="{StaticResource Margin8}"
-                            HorizontalAlignment="Left"
-                            Style="{StaticResource DefComboBox}" />
+                    <TextBlock
+                        Grid.Row="4"
+                        Grid.Column="0"
+                        Margin="{StaticResource Margin8}"
+                        VerticalAlignment="Center"
+                        Style="{StaticResource ToolbarTextBlock}"
+                        Text="Mtu" />
+                    <ComboBox
+                        x:Name="cmbMtu"
+                        Grid.Row="4"
+                        Grid.Column="1"
+                        Width="200"
+                        Margin="{StaticResource Margin8}"
+                        HorizontalAlignment="Left"
+                        Style="{StaticResource DefComboBox}" />
 
-                        <TextBlock
-                            Grid.Row="5"
-                            Grid.Column="0"
-                            Margin="{StaticResource Margin8}"
-                            VerticalAlignment="Center"
-                            Style="{StaticResource ToolbarTextBlock}"
-                            Text="{x:Static resx:ResUI.TbSettingsEnableExInbound}" />
-                        <ToggleButton
-                            x:Name="togEnableExInbound"
-                            Grid.Row="5"
-                            Grid.Column="1"
-                            Margin="{StaticResource Margin8}"
-                            HorizontalAlignment="Left" />
+                    <TextBlock
+                        Grid.Row="5"
+                        Grid.Column="0"
+                        Margin="{StaticResource Margin8}"
+                        VerticalAlignment="Center"
+                        Style="{StaticResource ToolbarTextBlock}"
+                        Text="{x:Static resx:ResUI.TbSettingsEnableExInbound}" />
+                    <ToggleButton
+                        x:Name="togEnableExInbound"
+                        Grid.Row="5"
+                        Grid.Column="1"
+                        Margin="{StaticResource Margin8}"
+                        HorizontalAlignment="Left" />
 
-                        <TextBlock
-                            Grid.Row="6"
-                            Grid.Column="0"
-                            Margin="{StaticResource Margin8}"
-                            VerticalAlignment="Center"
-                            Style="{StaticResource ToolbarTextBlock}"
-                            Text="{x:Static resx:ResUI.TbSettingsEnableIPv6Address}" />
-                        <ToggleButton
-                            x:Name="togEnableIPv6Address"
-                            Grid.Row="6"
-                            Grid.Column="1"
-                            Margin="{StaticResource Margin8}"
-                            HorizontalAlignment="Left" />
-                    </Grid>
-                </DockPanel>
+                    <TextBlock
+                        Grid.Row="6"
+                        Grid.Column="0"
+                        Margin="{StaticResource Margin8}"
+                        VerticalAlignment="Center"
+                        Style="{StaticResource ToolbarTextBlock}"
+                        Text="{x:Static resx:ResUI.TbSettingsEnableIPv6Address}" />
+                    <ToggleButton
+                        x:Name="togEnableIPv6Address"
+                        Grid.Row="6"
+                        Grid.Column="1"
+                        Margin="{StaticResource Margin8}"
+                        HorizontalAlignment="Left" />
+                </Grid>
             </TabItem>
 
             <TabItem Header="{x:Static resx:ResUI.TbSettingsCoreType}">