<local:NavigablePage
    x:Class="Microsoft.PowerToys.Settings.UI.Views.MouseWithoutBordersPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:Microsoft.PowerToys.Settings.UI.Helpers"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ptcontrols="using:Microsoft.PowerToys.Common.UI.Controls"
    xmlns:tkcontrols="using:CommunityToolkit.WinUI.Controls"
    xmlns:tkconverters="using:CommunityToolkit.WinUI.Converters"
    xmlns:ui="using:CommunityToolkit.WinUI"
    AutomationProperties.LandmarkType="Main"
    mc:Ignorable="d">
    <local:NavigablePage.Resources>
        <tkconverters:BoolToVisibilityConverter x:Key="negativeBoolToVisibilityConverter" />
        <tkconverters:BoolToObjectConverter
            x:Key="OneRowMatrixBoolToNumberOfRowsConverter"
            FalseValue="2"
            TrueValue="4" />
    </local:NavigablePage.Resources>
    <controls:SettingsPageControl x:Uid="MouseWithoutBorders" ModuleImageSource="ms-appx:///Assets/Settings/Modules/MouseWithoutBorders.png">
        <controls:SettingsPageControl.ModuleContent>
            <StackPanel Orientation="Vertical">
                <controls:SettingsGroup x:Uid="MouseWithoutBorders_ActivationSettings">
                    <controls:GPOInfoControl ShowWarning="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}">
                        <tkcontrols:SettingsCard
                            Name="MouseWithoutBordersToggleEnable"
                            x:Uid="MouseWithoutBorders_Toggle_Enable"
                            HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/MouseWithoutBorders.png}">
                            <ToggleSwitch
                                x:Uid="ToggleSwitch"
                                IsEnabled="{x:Bind ViewModel.CanBeEnabled, Mode=OneWay}"
                                IsOn="{x:Bind ViewModel.IsEnabled, Mode=TwoWay}" />
                        </tkcontrols:SettingsCard>
                    </controls:GPOInfoControl>
                </controls:SettingsGroup>
                <controls:SettingsGroup
                    x:Name="KeySettingsGroup"
                    x:Uid="MouseWithoutBorders_KeySettings"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsExpander
                        Name="MouseWithoutBordersSecurityKey"
                        x:Uid="MouseWithoutBorders_SecurityKey"
                        HeaderIcon="{ui:FontIcon Glyph=&#xE8D7;}"
                        IsExpanded="{x:Bind ViewModel.ConnectFieldsVisible, Mode=TwoWay}">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard ContentAlignment="Right">
                                <StackPanel Orientation="Horizontal" Spacing="8">
                                    <TextBox
                                        x:Name="ConnectSecurityKeyTextBox"
                                        x:Uid="MWB_SecurityKeyLabel"
                                        Width="248" />
                                    <TextBox
                                        x:Name="ConnectPCNameTextBox"
                                        x:Uid="MWB_PCNameLabel"
                                        Width="248" />
                                    <Button
                                        x:Uid="MouseWithoutBorders_Connect"
                                        Command="{x:Bind ConnectCommand, Mode=OneTime}"
                                        Style="{StaticResource AccentButtonStyle}" />
                                </StackPanel>
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                        <StackPanel Orientation="Horizontal" Spacing="8">
                            <TextBox IsReadOnly="True" Text="{x:Bind ViewModel.SecurityKey, Mode=TwoWay}" />
                            <Button
                                x:Uid="MouseWithoutBorders_NewKey"
                                Command="{x:Bind GenerateNewKeyCommand, Mode=OneTime}"
                                Style="{StaticResource AccentButtonStyle}" />
                            <Button
                                x:Uid="MouseWithoutBorders_Connect"
                                Command="{x:Bind ShowConnectFieldsCommand, Mode=OneTime}"
                                Style="{StaticResource AccentButtonStyle}"
                                Visibility="{x:Bind Path=ViewModel.ConnectFieldsVisible, Mode=OneWay, Converter={StaticResource ReverseBoolToVisibilityConverter}, ConverterParameter=True}" />
                        </StackPanel>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsCard Name="MouseWithoutBordersThisMachineNameLabel" x:Uid="MouseWithoutBorders_ThisMachineNameLabel">
                        <StackPanel Orientation="Horizontal" Spacing="8">
                            <ptcontrols:IsEnabledTextBlock
                                VerticalAlignment="Center"
                                Foreground="{ThemeResource TextFillColorSecondaryBrush}"
                                IsTextSelectionEnabled="True"
                                Text="{x:Bind ViewModel.MachineHostName, Mode=OneTime}" />
                            <Button
                                Padding="4"
                                Command="{x:Bind CopyPCNameCommand, Mode=OneTime}"
                                Content="{ui:FontIcon Glyph=&#xE8C8;,
                                                      FontSize=16}"
                                FontFamily="{StaticResource SymbolThemeFontFamily}"
                                Style="{StaticResource SubtleButtonStyle}">
                                <ToolTipService.ToolTip>
                                    <TextBlock x:Uid="MouseWithoutBorders_CopyMachineName" TextWrapping="Wrap" />
                                </ToolTipService.ToolTip>
                            </Button>
                        </StackPanel>
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>
                <controls:SettingsGroup
                    x:Name="DeviceLayoutSettingsGroup"
                    x:Uid="MouseWithoutBorders_DeviceLayoutSettings"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsCard
                        HorizontalContentAlignment="Stretch"
                        Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
                        ContentAlignment="Vertical">
                        <StackPanel Orientation="Vertical" Spacing="8">
                            <ItemsControl
                                x:Name="DevicesItemsControl"
                                HorizontalAlignment="Center"
                                IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}"
                                ItemsSource="{Binding MachineMatrixString, Mode=TwoWay}">
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <WrapGrid MaximumRowsOrColumns="{Binding MatrixOneRow, Mode=OneWay, Converter={StaticResource OneRowMatrixBoolToNumberOfRowsConverter}}" Orientation="Horizontal" />
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <!--  TODO: colors?  -->
                                        <!--
                                            BorderBrush="#DFDFDF"
                                            Background="#d4d4d4"
                                        -->
                                        <!--  Dragging while elevated crashes on WinUI3: https://github.com/microsoft/microsoft-ui-xaml/issues/7690  -->
                                        <Border
                                            Width="136"
                                            Height="90"
                                            Margin="4"
                                            AllowDrop="{Binding Item.CanDragDrop, Mode=OneWay}"
                                            Background="{ThemeResource SolidBackgroundFillColorBaseAltBrush}"
                                            BorderBrush="{Binding Item.StatusBrush}"
                                            BorderThickness="2"
                                            CanDrag="{Binding Item.CanDragDrop, Mode=OneWay}"
                                            CornerRadius="4"
                                            DataContext="{Binding}"
                                            DragOver="Device_DragOver"
                                            DragStarting="Device_DragStarting"
                                            Drop="Device_Drop"
                                            ToolTipService.ToolTip="{Binding Item.Name, Mode=OneWay}">
                                            <Grid>
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="*" />
                                                    <RowDefinition Height="Auto" />
                                                </Grid.RowDefinitions>
                                                <FontIcon
                                                    Margin="0,12,0,0"
                                                    VerticalAlignment="Center"
                                                    FontSize="32"
                                                    Glyph="&#xE7F8;" />
                                                <TextBlock
                                                    Grid.Row="1"
                                                    Margin="12"
                                                    HorizontalAlignment="Center"
                                                    Style="{StaticResource CaptionTextBlockStyle}"
                                                    Tag="DeviceName"
                                                    Text="{Binding Item.Name}" />
                                            </Grid>
                                        </Border>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                            <Button HorizontalAlignment="Right" Command="{x:Bind ReconnectCommand, Mode=OneTime}">
                                <ToolTipService.ToolTip>
                                    <TextBlock x:Uid="MouseWithoutBorders_ReconnectTooltip" TextWrapping="Wrap" />
                                </ToolTipService.ToolTip>
                                <TextBlock x:Uid="MouseWithoutBorders_ReconnectButton" />
                            </Button>
                        </StackPanel>
                    </tkcontrols:SettingsCard>
                    <InfoBar
                        x:Uid="MouseWithoutBorders_CannotDragDropAsAdmin"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.ShowInfobarCannotDragDropAsAdmin, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.ShowInfobarCannotDragDropAsAdmin, Mode=OneWay}"
                        Severity="Informational" />
                    <tkcontrols:SettingsCard Name="MouseWithoutBordersMatrixOneRow" x:Uid="MouseWithoutBorders_MatrixOneRow">
                        <ToggleSwitch x:Uid="MouseWithoutBorders_MatrixOneRow_ToggleSwitch" IsOn="{x:Bind ViewModel.MatrixOneRow, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>
                <controls:SettingsGroup
                    x:Name="ServiceSettingsGroup"
                    x:Uid="MouseWithoutBorders_ServiceSettings"
                    IsEnabled="{x:Bind ViewModel.CanToggleUseService, Mode=OneWay}">
                    <controls:GPOInfoControl ShowWarning="{x:Bind ViewModel.ShowPolicyConfiguredInfoForServiceSettings, Mode=OneWay}">
                        <tkcontrols:SettingsExpander
                            Name="MouseWithoutBordersUseService"
                            x:Uid="MouseWithoutBorders_UseService"
                            IsEnabled="{x:Bind ViewModel.UseServiceSettingIsEnabled, Mode=OneWay}">
                            <ToggleSwitch x:Uid="MouseWithoutBorders_UseService_ToggleSwitch" IsOn="{x:Bind ViewModel.UseService, Mode=TwoWay}" />
                            <tkcontrols:SettingsExpander.Items>
                                <tkcontrols:SettingsCard
                                    Name="MouseWithoutBordersUninstallService"
                                    x:Uid="MouseWithoutBorders_UninstallService"
                                    ActionIcon="{ui:FontIcon Glyph=&#xE8A7;}"
                                    Command="{x:Bind ViewModel.UninstallServiceEventHandler}"
                                    IsClickEnabled="{x:Bind ViewModel.CanUninstallService, Mode=OneWay}"
                                    IsEnabled="{x:Bind ViewModel.CanUninstallService, Mode=OneWay}" />
                            </tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsExpander.ItemsFooter>
                                <InfoBar
                                    x:Uid="MouseWithoutBorders_ServiceUserUninstallWarning"
                                    IsClosable="False"
                                    IsOpen="{x:Bind ViewModel.IsEnabled, Mode=OneWay}"
                                    IsTabStop="{x:Bind ViewModel.IsEnabled, Mode=OneWay}"
                                    Severity="Warning" />
                            </tkcontrols:SettingsExpander.ItemsFooter>
                        </tkcontrols:SettingsExpander>
                    </controls:GPOInfoControl>
                    <InfoBar
                        x:Uid="MouseWithoutBorders_RunAsAdminText"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.ShowInfobarRunAsAdminText, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.ShowInfobarRunAsAdminText, Mode=OneWay}"
                        Severity="Informational" />
                </controls:SettingsGroup>


                <controls:SettingsGroup
                    x:Name="BehaviorSettingsGroup"
                    x:Uid="MouseWithoutBorders_Settings"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <InfoBar
                        x:Uid="GPO_SomeSettingsAreManaged"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.ShowPolicyConfiguredInfoForBehaviorSettings, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.ShowPolicyConfiguredInfoForBehaviorSettings, Mode=OneWay}"
                        Severity="Informational">
                        <InfoBar.IconSource>
                            <FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE72E;" />
                        </InfoBar.IconSource>
                    </InfoBar>

                    <tkcontrols:SettingsExpander x:Uid="MouseWithoutBorders_MouseBehavior" HeaderIcon="{ui:FontIcon Glyph=&#xE962;}">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersWrapMouse" ContentAlignment="Left">
                                <CheckBox x:Uid="MouseWithoutBorders_WrapMouse" IsChecked="{x:Bind ViewModel.WrapMouse, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersMoveMouseRelatively" ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="MouseWithoutBorders_MoveMouseRelatively" IsChecked="{x:Bind ViewModel.MoveMouseRelatively, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersBlockMouseAtScreenCorners" ContentAlignment="Left">
                                <CheckBox x:Uid="MouseWithoutBorders_BlockMouseAtScreenCorners" IsChecked="{x:Bind ViewModel.BlockMouseAtScreenCorners, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersHideMouseAtScreenEdge" ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="MouseWithoutBorders_HideMouseAtScreenEdge" IsChecked="{x:Bind ViewModel.HideMouseAtScreenEdge, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersDrawMouseCursor" ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="MouseWithoutBorders_DrawMouseCursor" IsChecked="{x:Bind ViewModel.DrawMouseCursor, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsExpander
                        Name="MouseWithoutBordersShareClipboard"
                        x:Uid="MouseWithoutBorders_ShareClipboard"
                        HeaderIcon="{ui:FontIcon Glyph=&#xF0E3;}"
                        IsEnabled="{x:Bind ViewModel.CardForShareClipboardSettingIsEnabled, Mode=OneWay}"
                        IsExpanded="True">
                        <ToggleSwitch x:Uid="MouseWithoutBorders_ShareClipboard_ToggleSwitch" IsOn="{x:Bind ViewModel.ShareClipboard, Mode=TwoWay}" />
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard
                                Name="MouseWithoutBordersTransferFile"
                                ContentAlignment="Left"
                                IsEnabled="{x:Bind ViewModel.CardForTransferFileSettingIsEnabled, Mode=OneWay}">
                                <CheckBox x:Uid="MouseWithoutBorders_TransferFile" IsChecked="{x:Bind ViewModel.TransferFile, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsCard
                        Name="MouseWithoutBordersValidateRemoteMachineIP"
                        x:Uid="MouseWithoutBorders_ValidateRemoteMachineIP"
                        HeaderIcon="{ui:FontIcon Glyph=&#xEDA3;}"
                        IsEnabled="{x:Bind ViewModel.CardForValidateRemoteIpSettingIsEnabled, Mode=OneWay}">
                        <ToggleSwitch x:Uid="MouseWithoutBorders_ValidateRemoteMachineIP_ToggleSwitch" IsOn="{x:Bind ViewModel.ValidateRemoteMachineIP, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                    <tkcontrols:SettingsCard
                        Name="MouseWithoutBordersSameSubnetOnly"
                        x:Uid="MouseWithoutBorders_SameSubnetOnly"
                        HeaderIcon="{ui:FontIcon Glyph=&#xEDA3;}"
                        IsEnabled="{x:Bind ViewModel.CardForSameSubnetOnlySettingIsEnabled, Mode=OneWay}">
                        <ToggleSwitch x:Uid="MouseWithoutBorders_SameSubnetOnly_ToggleSwitch" IsOn="{x:Bind ViewModel.SameSubnetOnly, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                    <tkcontrols:SettingsCard
                        Name="MouseWithoutBordersBlockScreenSaverOnOtherMachines"
                        x:Uid="MouseWithoutBorders_BlockScreenSaverOnOtherMachines"
                        HeaderIcon="{ui:FontIcon Glyph=&#xF16A;}"
                        IsEnabled="{x:Bind ViewModel.CardForBlockScreensaverSettingIsEnabled, Mode=OneWay}">
                        <ToggleSwitch IsOn="{x:Bind ViewModel.BlockScreenSaverOnOtherMachines, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                    <tkcontrols:SettingsCard
                        Name="MouseWithoutBordersShowClipboardAndNetworkStatusMessages"
                        x:Uid="MouseWithoutBorders_ShowClipboardAndNetworkStatusMessages"
                        HeaderIcon="{ui:FontIcon Glyph=&#xE91C;}">
                        <ToggleSwitch IsOn="{x:Bind ViewModel.ShowClipboardAndNetworkStatusMessages, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>

                <controls:SettingsGroup x:Uid="MouseWithoutBorders_EasyMouseSettings_Group" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsExpander x:Uid="MouseWithoutBorders_EasyMouseOption" HeaderIcon="{ui:FontIcon Glyph=&#xE962;}">
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind Path=ViewModel.EasyMouseOptionIndex, Mode=TwoWay}">
                            <ComboBoxItem x:Uid="MouseWithoutBorders_EasyMouseOption_Disabled" />
                            <ComboBoxItem x:Uid="MouseWithoutBorders_EasyMouseOption_Enabled" />
                            <ComboBoxItem x:Uid="MouseWithoutBorders_EasyMouseOption_Ctrl" />
                            <ComboBoxItem x:Uid="MouseWithoutBorders_EasyMouseOption_Shift" />
                        </ComboBox>
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard
                                Name="MouseWithoutBordersDisableEasyMouseWhenForegroundWindowIsFullscreen"
                                x:Uid="MouseWithoutBorders_DisableEasyMouseWhenForegroundWindowIsFullscreen"
                                IsEnabled="{x:Bind ViewModel.EasyMouseEnabled, Mode=OneWay}">
                                <ToggleSwitch x:Uid="MouseWithoutBorders_DisableEasyMouseWhenForegroundWindowIsFullscreen_ToggleSwitch" IsOn="{x:Bind ViewModel.DisableEasyMouseWhenForegroundWindowIsFullscreen, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                        <tkcontrols:SettingsExpander.ItemsFooter>
                            <InfoBar
                                x:Uid="MouseWithoutBorders_CanOnlyStopEasyMouseIfMovingFromHostMachine"
                                IsClosable="False"
                                IsOpen="True"
                                Severity="Informational" />
                        </tkcontrols:SettingsExpander.ItemsFooter>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsExpander
                        Name="MouseWithoutBordersDisableEasyMouseWhenForegroundWindowIsFullscreen_Expander"
                        x:Uid="MouseWithoutBorders_DisableEasyMouseWhenForegroundWindowIsFullscreen_Expander"
                        HeaderIcon="{ui:FontIcon Glyph=&#xECE4;}"
                        IsEnabled="{x:Bind ViewModel.IsEasyMouseBlockingOnFullscreenEnabled, Mode=OneWay}"
                        IsExpanded="False">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard
                                Name="MouseWithoutBordersDisableEasyMouseWhenForegroundWindowIsFullscreenExcludedApps"
                                HorizontalContentAlignment="Stretch"
                                ContentAlignment="Vertical">
                                <TextBox
                                    x:Uid="MouseWithoutBorders_DisableEasyMouseWhenForegroundWindowIsFullscreen_TextBoxControl"
                                    MinWidth="240"
                                    MinHeight="160"
                                    AcceptsReturn="True"
                                    IsSpellCheckEnabled="False"
                                    ScrollViewer.IsVerticalRailEnabled="True"
                                    ScrollViewer.VerticalScrollBarVisibility="Visible"
                                    ScrollViewer.VerticalScrollMode="Enabled"
                                    Text="{x:Bind ViewModel.EasyMouseFullscreenSwitchBlockExcludedApps, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                    TextWrapping="Wrap" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>
                </controls:SettingsGroup>

                <controls:SettingsGroup
                    Name="MouseWithoutBordersKeyboardShortcutsGroup"
                    x:Uid="MouseWithoutBorders_KeyboardShortcuts_Group"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsExpander x:Uid="MouseWithoutBorders_Shortcuts" HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersToggleEasyMouseShortcut" x:Uid="MouseWithoutBorders_ToggleEasyMouseShortcut">
                                <controls:ShortcutControl
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    AllowDisable="True"
                                    HotkeySettings="{x:Bind Path=ViewModel.ToggleEasyMouseShortcut, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard Name="MouseWithoutBordersLockMachinesShortcut" x:Uid="MouseWithoutBorders_LockMachinesShortcut">
                                <controls:ShortcutControl
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    AllowDisable="True"
                                    HotkeySettings="{x:Bind Path=ViewModel.LockMachinesShortcut, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>

                            <tkcontrols:SettingsCard Name="MouseWithoutBordersSwitch2AllPcShortcut" x:Uid="MouseWithoutBorders_Switch2AllPcShortcut">
                                <controls:ShortcutControl
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    AllowDisable="True"
                                    HotkeySettings="{x:Bind Path=ViewModel.HotKeySwitch2AllPC, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>

                            <tkcontrols:SettingsCard Name="MouseWithoutBordersReconnectShortcut" x:Uid="MouseWithoutBorders_ReconnectShortcut">
                                <controls:ShortcutControl
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    AllowDisable="True"
                                    HotkeySettings="{x:Bind Path=ViewModel.ReconnectShortcut, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>

                            <tkcontrols:SettingsCard Name="MouseWithoutBordersSwitchBetweenMachineShortcut" x:Uid="MouseWithoutBorders_SwitchBetweenMachineShortcut">
                                <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind Path=ViewModel.SelectedSwitchBetweenMachineShortcutOptionsIndex, Mode=TwoWay}">
                                    <!--  These should be in the same order as the array items in MouseWithoutBordersViewModel.cs  -->
                                    <ComboBoxItem x:Uid="MouseWithoutBorders_SwitchBetweenMachineShortcut_F1" />
                                    <ComboBoxItem x:Uid="MouseWithoutBorders_SwitchBetweenMachineShortcut_1" />
                                    <ComboBoxItem x:Uid="MouseWithoutBorders_SwitchBetweenMachineShortcut_Disabled" />
                                </ComboBox>
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>
                </controls:SettingsGroup>
                <controls:SettingsGroup
                    x:Name="AdvancedSettingsGroup"
                    x:Uid="MouseWithoutBorders_AdvancedSettings_Group"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsExpander
                        Name="MouseWithoutBordersIPAddressMapping"
                        x:Uid="MouseWithoutBorders_IPAddressMapping"
                        IsExpanded="True">
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard
                                HorizontalContentAlignment="Stretch"
                                ContentAlignment="Vertical"
                                IsEnabled="{x:Bind ViewModel.CardForName2IpSettingIsEnabled, Mode=OneWay}">
                                <TextBox
                                    x:Uid="MouseWithoutBorders_IPAddressMapping_TextBoxControl"
                                    MinWidth="240"
                                    MinHeight="160"
                                    MaxHeight="480"
                                    AcceptsReturn="True"
                                    ScrollViewer.IsVerticalRailEnabled="True"
                                    ScrollViewer.VerticalScrollBarVisibility="Visible"
                                    ScrollViewer.VerticalScrollMode="Enabled"
                                    Text="{x:Bind ViewModel.Name2IP, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                    TextWrapping="Wrap" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard
                                Padding="0"
                                HorizontalContentAlignment="Stretch"
                                Background="{ThemeResource InfoBarInformationalSeverityBackgroundBrush}"
                                ContentAlignment="Vertical"
                                Visibility="{x:Bind ViewModel.ShowPolicyConfiguredInfoForName2IPSetting, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
                                <InfoBar
                                    x:Uid="GPO_SettingIsManaged"
                                    Background="Transparent"
                                    BorderBrush="Transparent"
                                    IsClosable="False"
                                    IsOpen="True"
                                    IsTabStop="{x:Bind ViewModel.ShowPolicyConfiguredInfoForName2IPSetting, Mode=OneWay}"
                                    Severity="Informational">
                                    <InfoBar.IconSource>
                                        <FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE72E;" />
                                    </InfoBar.IconSource>
                                </InfoBar>
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard
                                Margin="0,1,0,0"
                                Padding="0"
                                HorizontalContentAlignment="Stretch"
                                Background="{ThemeResource InfoBarInformationalSeverityBackgroundBrush}"
                                ContentAlignment="Vertical"
                                Visibility="{x:Bind ViewModel.Name2IpListPolicyIsConfigured, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
                                <InfoBar
                                    x:Uid="MouseWithoutBorders_PolicyIPAddressMappingInfo"
                                    Background="Transparent"
                                    BorderBrush="Transparent"
                                    IsClosable="False"
                                    IsOpen="True"
                                    IsTabStop="{x:Bind ViewModel.Name2IpListPolicyIsConfigured, Mode=OneWay}"
                                    Severity="Informational">
                                    <InfoBar.IconSource>
                                        <FontIconSource FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE72E;" />
                                    </InfoBar.IconSource>
                                    <InfoBar.Content>
                                        <TextBox
                                            x:Uid="MouseWithoutBorders_PolicyIPAddressMappingInfo_TextBoxControl"
                                            MinWidth="240"
                                            MinHeight="80"
                                            MaxHeight="160"
                                            Margin="0,0,44,16"
                                            AcceptsReturn="True"
                                            IsReadOnly="True"
                                            ScrollViewer.IsVerticalRailEnabled="True"
                                            ScrollViewer.VerticalScrollBarVisibility="Visible"
                                            ScrollViewer.VerticalScrollMode="Enabled"
                                            Text="{x:Bind ViewModel.Name2IpListPolicyData, Mode=OneWay}"
                                            TextWrapping="Wrap" />
                                    </InfoBar.Content>
                                </InfoBar>
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>
                </controls:SettingsGroup>
                <controls:SettingsGroup
                    x:Name="TroubleshootingGroup"
                    x:Uid="MouseWithoutBorders_TroubleShooting"
                    IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
                    <tkcontrols:SettingsCard
                        Name="MouseWithoutBordersAddFirewallRuleButtonControl"
                        x:Uid="MouseWithoutBorders_AddFirewallRuleButtonControl"
                        ActionIcon="{ui:FontIcon Glyph=&#xE8A7;}"
                        Command="{x:Bind ViewModel.AddFirewallRuleEventHandler}"
                        IsClickEnabled="True" />
                    <controls:GPOInfoControl ShowWarning="{x:Bind ViewModel.ShowPolicyConfiguredInfoForOriginalUiSetting, Mode=OneWay}">
                        <tkcontrols:SettingsCard
                            Name="MouseWithoutBordersShowOriginalUI"
                            x:Uid="MouseWithoutBorders_ShowOriginalUI"
                            IsEnabled="{x:Bind ViewModel.CardForOriginalUiSettingIsEnabled, Mode=OneWay}">
                            <ToggleSwitch x:Uid="MouseWithoutBorders_ShowOriginalUI_ToggleSwitch" IsOn="{x:Bind ViewModel.ShowOriginalUI, Mode=TwoWay}" />
                        </tkcontrols:SettingsCard>
                    </controls:GPOInfoControl>
                </controls:SettingsGroup>
            </StackPanel>
        </controls:SettingsPageControl.ModuleContent>
        <controls:SettingsPageControl.PrimaryLinks>
            <controls:PageLink x:Uid="LearnMore_MouseWithoutBorders" Link="https://aka.ms/PowerToysOverview_MouseWithoutBorders" />
        </controls:SettingsPageControl.PrimaryLinks>
        <controls:SettingsPageControl.SecondaryLinks>
            <controls:PageLink Link="http://aka.ms/mm" Text="Mouse without Borders" />
            <controls:PageLink Link="https://github.com/microsoft/PowerToys/blob/main/COMMUNITY.md#mouse-without-borders-original-contributors" Text="Truong Do (Đỗ Đức Trường) and other original contributors" />
        </controls:SettingsPageControl.SecondaryLinks>
    </controls:SettingsPageControl>
</local:NavigablePage>
