xaml/RemoteProUI.xaml

<Window x:Class="WpfPowershell.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
        xmlns:mdControls="clr-namespace:MaterialDesignThemes.Wpf;assembly=MaterialDesignThemes.Wpf"
        Title="RemotePro"
        MinHeight="990" MinWidth="800"
        WindowStartupLocation="CenterScreen"
        SizeToContent="WidthAndHeight"
        Background="{DynamicResource MaterialDesignPaper}">
 
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <materialDesign:BundledTheme x:Key="AppTheme" BaseTheme="Light" PrimaryColor="Grey" SecondaryColor="Lime" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign2.Defaults.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
 
    <materialDesign:DialogHost>
        <materialDesign:DrawerHost IsLeftDrawerOpen="{Binding ElementName=MenuToggleButton, Path=IsChecked}">
            <!-- Left Drawer Content -->
            <materialDesign:DrawerHost.LeftDrawerContent>
                <StackPanel Margin="16" VerticalAlignment="Stretch">
 
                    <!-- Optional: A button inside the drawer to close it -->
                    <Button Content="Close Drawer" Margin="5" HorizontalAlignment="Right"
                            Command="{x:Static materialDesign:DrawerHost.CloseDrawerCommand}" />
 
                    <!-- StackPanel with Your Buttons -->
                    <StackPanel Orientation="Vertical" HorizontalAlignment="Left" Margin="0,20,0,0">
                        <Button Content="TicketBlock" Margin="5" Name="TicketBlock" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                        <Button Content="CamReport" Margin="5" Name="CamReport" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                        <Button Content="Show Cameras" Margin="5" Name="ShowCameras" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                        <Button Content="VideoOSItems" Margin="5" Name="ShowVideoOSItems" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                        <Button Content="Show Hardware" Margin="5" Name="Hardware" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                        <Button Content="Show ItemState" Margin="5" Name="ItemState" Width="140" Style="{StaticResource MaterialDesignRaisedButton}" />
                    </StackPanel>
                </StackPanel>
            </materialDesign:DrawerHost.LeftDrawerContent>
 
            <!-- Main Content -->
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
 
                <!-- Top Toolbar with Navigation Buttons -->
                <materialDesign:ColorZone Padding="16"
                                          materialDesign:ElevationAssist.Elevation="Dp4"
                                          Mode="PrimaryMid"
                                          Grid.Row="0">
                    <DockPanel>
                        <StackPanel Orientation="Horizontal">
                            <!-- The single MenuToggleButton used for the drawer -->
                            <ToggleButton x:Name="MenuToggleButton"
                                          AutomationProperties.Name="HamburgerToggleButton"
                                          IsChecked="False"
                                          Style="{StaticResource MaterialDesignHamburgerToggleButton}" />
 
                            <Button Margin="24,0,0,0"
                                    materialDesign:RippleAssist.Feedback="{Binding RelativeSource={RelativeSource Self}, Path=Foreground, Converter={StaticResource BrushRoundConverter}}"
                                    x:Name="GithubRepositoryCommand"
                                    Content="{materialDesign:PackIcon Kind=Github, Size=24}"
                                    Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"
                                    Style="{StaticResource MaterialDesignToolButton}"
                                    ToolTip="Github Repository" />
 
                            <Button Margin="16,0,0,0"
                                    materialDesign:RippleAssist.Feedback="{Binding RelativeSource={RelativeSource Self}, Path=Foreground, Converter={StaticResource BrushRoundConverter}}"
                                    x:Name="PowerShellGalleryCommand"
                                    Content="{materialDesign:PackIcon Kind=Powershell, Size=24}"
                                    Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"
                                    Style="{StaticResource MaterialDesignToolButton}"
                                    ToolTip="PowerShell Gallery" />
 
                            <Button Margin="16,0,0,0"
                                    materialDesign:RippleAssist.Feedback="{Binding RelativeSource={RelativeSource Self}, Path=Foreground, Converter={StaticResource BrushRoundConverter}}"
                                    x:Name="DocsSiteCommand"
                                    Content="{materialDesign:PackIcon Kind=Web, Size=24}"
                                    Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"
                                    Style="{StaticResource MaterialDesignToolButton}"
                                    ToolTip="Module Documentation" />
                        </StackPanel>
 
                        <materialDesign:PopupBox DockPanel.Dock="Right"
                                                 PlacementMode="BottomAndAlignRightEdges"
                                                 StaysOpen="False">
                            <StackPanel >
                                <Grid Margin="10" >
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Margin="0,0,10,0" Text="Flow toggle" />
                                    <ToggleButton x:Name="FlowDirectionToggleButton" Grid.Row="2" Grid.Column="1" />
                                    <TextBlock Grid.Row="2" Grid.Column="2" Margin="10,10,0,0" Text="RTL" HorizontalAlignment="Left"/>
                                </Grid>
                                <Separator />
                                <Button x:Name="ReportIssueCommand" Content="Report Issue" Style="{StaticResource MaterialDesignFlatButton}" HorizontalAlignment="Left" />
                                <Button x:Name="LicenseInformationCommand" Content="License" Style="{StaticResource MaterialDesignFlatButton}" HorizontalAlignment="Left"/>
                                <Button x:Name="AboutCommand" Content="About" Style="{StaticResource MaterialDesignFlatButton}" HorizontalAlignment="Left"/>
 
                                <Separator />
                                <Button x:Name="ExitApplicationCommand" Content="Exit Application" Style="{StaticResource MaterialDesignFlatButton}" HorizontalAlignment="Left"/>
                            </StackPanel>
                        </materialDesign:PopupBox>
 
                        <TextBlock Margin="-152,0,0,0"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                AutomationProperties.Name="RemotePro"
                                FontSize="22"
                                Text="RemotePro" />
                    </DockPanel>
                </materialDesign:ColorZone>
 
                <!-- Main Content Area -->
                <TabControl Grid.Row="1" Background="{DynamicResource MaterialDesignPaper}">
                    <TabItem Header="Manage Connections" ToolTip="Import, view, and select VMS connections and profiles.">
                        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" MinHeight="200">
                            <Grid Margin="20">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="*"/>
                                </Grid.RowDefinitions>
 
                                <!-- Connection Controls -->
                                <mdControls:Card Grid.Row="0" Padding="20" Margin="0,0,0,20">
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="130*"/>
                                            <!-- Space for the New/Open File buttons -->
                                            <ColumnDefinition Width="260*"/>
                                            <!-- Space for the ComboBox -->
                                            <ColumnDefinition Width="130*"/>
                                            <!-- Space for the Connect and Terminate buttons -->
                                        </Grid.ColumnDefinitions>
 
                                        <StackPanel Grid.Column="0" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Height="80" Width="225">
                                            <Button Name="New_Connection_File" Content="Create Connection File" ToolTip="Create Excel template for importing connection profiles." Height="30" Style="{StaticResource MaterialDesignFlatButton}" Margin="5" />
                                            <Button Name="OpenFile" Content="Import Connections" ToolTip="Select Excel spreadsheet for importing connection profiles." Height="30" Style="{StaticResource MaterialDesignFlatButton}" Margin="5" />
                                        </StackPanel>
 
                                        <!-- Dropdown for selecting connection -->
                                        <StackPanel Grid.Column="1" VerticalAlignment="Center" Height="74">
                                            <Label Content="Select Connection" FontSize="16" FontWeight="Bold" Margin="0,0,0,5" HorizontalAlignment="Center"/>
                                            <ComboBox Name="Connections_Combo_Box" ToolTip="Available MilestonePSTools connection profliles." Height="30" Margin="5" MaxDropDownHeight="350"/>
                                        </StackPanel>
 
                                        <!-- Connect and Terminate Buttons stacked and aligned to the right -->
                                        <StackPanel Grid.Column="2" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Height="80" Margin="13,0,0,0" Width="181">
                                            <Button Name="Connect" Content="Connect" ToolTip="Connect to VMS." Height="30" Style="{StaticResource MaterialDesignFlatButton}" Margin="5" />
                                            <Button Name="Terminate" Content="Terminate Connection" ToolTip="Disconnect from VMS." Height="30" Style="{StaticResource MaterialDesignFlatButton}" Margin="5" />
                                        </StackPanel>
                                    </Grid>
                                </mdControls:Card>
 
                                <!-- Passthrough Command Input and Execute -->
                                <mdControls:Card Grid.Row="2" Padding="20" Margin="0,0,0,20" Height="120">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="3*"/>
                                            <ColumnDefinition Width="1*"/>
                                        </Grid.ColumnDefinitions>
 
                                        <Label Content="Send PowerShell Command to Shell" FontSize="16" FontWeight="Bold" Grid.ColumnSpan="2" Margin="0,0,0,10" HorizontalAlignment="Left"/>
 
                                        <!-- ComboBox with a drop-down for predefined commands -->
                                        <ComboBox Name="CommandInput" ToolTip="Select or type command here." Margin="5,40,6,0" VerticalAlignment="Top" Grid.Column="0" Height="30" IsEditable="True" HorizontalAlignment="Stretch">
                                            <!-- Predefined commands -->
                                            <ComboBoxItem Content="Get-Runspace | Out-GridView" />
                                            <ComboBoxItem Content="Get-Command -Module RemotePro | Out-HtmlView -EnableScroller -ScrollX -AlphabetSearch -SearchPane" />
                                            <ComboBoxItem Content="Get-RpControllerObject | Get-Member | Out-HtmlView -EnableScroller -ScrollX -AlphabetSearch -SearchPane" />
                                            <ComboBoxItem Content="Get-RpEventHandlers | Out-HtmlView -EnableScroller -ScrollX -AlphabetSearch -SearchPane" />
                                            <ComboBoxItem Content="Get-RpRunspaceEvents | Out-HtmlView -EnableScroller -ScrollX -AlphabetSearch -SearchPane"/>
                                            <!-- User can also type their own command -->
                                        </ComboBox>
 
                                        <!-- Execute Button with Icon -->
                                        <Button Name="ExecuteCommand" ToolTip="Send command to main terminal." Style="{StaticResource MaterialDesignRaisedButton}" Margin="4,38,5,0" VerticalAlignment="Top" Grid.Column="1" Height="30">
                                            <StackPanel Orientation="Horizontal">
                                                <materialDesign:PackIcon Kind="Terminal" Width="20" Height="20" Margin="0,0,5,0"/>
                                                <TextBlock Text="Execute" VerticalAlignment="Center"/>
                                            </StackPanel>
                                        </Button>
                                    </Grid>
                                </mdControls:Card>
 
                                <!-- Site Information TAB -->
                                <TabControl Name="SiteAndProfileTabControl" Grid.Row="3" Margin="0,20,0,0">
                                    <TabItem Header="VMS Connection Overview" ToolTip="View details for current VMS connection.">
                                        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Height="500">
                                            <mdControls:Card Padding="20" Margin="10">
                                                <TextBox Name="Connection_Status_Box"
                                                        ToolTip="Management and Recording Server(s) details"
                                                        TextWrapping="Wrap"
                                                        VerticalScrollBarVisibility="Auto"
                                                        AcceptsReturn="True"
                                                        IsReadOnly="True"
                                                        MinHeight="450"
                                                        Background="{DynamicResource MaterialDesignPaper}"/>
                                            </mdControls:Card>
                                        </ScrollViewer>
                                    </TabItem>
 
                                    <!-- MilestonePSTools Connection Profile Details Section -->
                                    <TabItem Header="MilestonePSTools Connection Profile Details" ToolTip="View MilestonePSTools connection profile information.">
                                        <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="*"/>
                                            </Grid.RowDefinitions>
 
                                            <!-- Top bar with Refresh, View Details, Delete, and Add Profile buttons -->
                                            <StackPanel Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Margin="5">
                                                <!-- Refresh Button with Icon -->
                                                <Button x:Name="Connection_Profile_Refresh_Button"
                                                        VerticalAlignment="Top"
                                                        ToolTip="Refresh Profile List"
                                                        Style="{StaticResource MaterialDesignFlatButton}"
                                                        Margin="5">
                                                    <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24"/>
                                                </Button>
 
                                                <!-- View Details Button with Icon -->
                                                <Button x:Name="PopOutButton"
                                                        VerticalAlignment="Top"
                                                        ToolTip="View profile details in a separate window"
                                                        Style="{StaticResource MaterialDesignFlatButton}"
                                                        Margin="5">
                                                    <materialDesign:PackIcon Kind="Eye" Width="24" Height="24"/>
                                                </Button>
 
                                                <!-- Delete Button with Icon -->
                                                <Button x:Name="Delete_Profile_Button"
                                                        VerticalAlignment="Top"
                                                        ToolTip="Delete selected profile"
                                                        Style="{StaticResource MaterialDesignFlatButton}"
                                                        Margin="5">
                                                    <materialDesign:PackIcon Kind="Delete" Width="24" Height="24"/>
                                                </Button>
 
                                                <!-- Add Profile Button with Icon -->
                                                <Button x:Name="Add_Profile_Button"
                                                        VerticalAlignment="Top"
                                                        ToolTip="Add a new profile"
                                                        Style="{StaticResource MaterialDesignFlatButton}"
                                                        Margin="5">
                                                    <materialDesign:PackIcon Kind="Plus" Width="24" Height="24"/>
                                                </Button>
 
                                                <!-- Edit Profile Button with Icon -->
                                                <Button x:Name="Edit_Profile_Button"
                                                        VerticalAlignment="Top"
                                                        ToolTip="Edit existing profile"
                                                        Style="{StaticResource MaterialDesignFlatButton}"
                                                        Margin="5">
                                                    <materialDesign:PackIcon Kind="Pencil" Width="24" Height="24"/>
                                                </Button>
                                            </StackPanel>
 
                                            <!-- Card containing the ListBox -->
                                            <mdControls:Card Grid.Row="1" Padding="20">
                                                <ListBox x:Name="ConnectionProfileListBox"
                                                        SelectionMode="Extended"
                                                        Background="{DynamicResource MaterialDesignPaper}"
                                                        HorizontalAlignment="Stretch"
                                                        VerticalAlignment="Stretch"
                                                        ScrollViewer.VerticalScrollBarVisibility="Visible"
                                                        ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                                        MaxHeight="350">
                                                    <ListBox.ItemTemplate>
                                                        <DataTemplate>
                                                            <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="5">
                                                                <!-- Name -->
                                                                <TextBlock x:Name="NameTextBlock" Text="{Binding Name}"
                                                                        Margin="5,0"
                                                                        Width="150"
                                                                        VerticalAlignment="Center"/>
                                                                <!-- Server Address -->
                                                                <TextBlock x:Name="ServerAddressTextBlock" Text="{Binding ServerAddress}"
                                                                        Margin="5,0"
                                                                        Width="200"
                                                                        VerticalAlignment="Center"/>
                                                                <!-- Credential -->
                                                                <TextBlock x:Name="CredentialTextBlock" Text="{Binding Credential}"
                                                                        Margin="5,0"
                                                                        Width="200"
                                                                        VerticalAlignment="Center"/>
                                                            </StackPanel>
                                                        </DataTemplate>
                                                    </ListBox.ItemTemplate>
                                                </ListBox>
                                            </mdControls:Card>
                                        </Grid>
                                    </TabItem>
                                </TabControl>
                            </Grid>
                        </ScrollViewer>
                    </TabItem>
 
                    <!-- Runspace Log TAB -->
                    <TabItem Header="Runspace Log" ToolTip="View logs from runspace dispatched cmdlets.">
                        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Name="LogScrollViewer">
                            <TextBox Name="Runspace_Mutex_Log"
                                    TextWrapping="Wrap"
                                    IsReadOnly="True"
                                    VerticalAlignment="Top"
                                    HorizontalAlignment="Left"
                                    Width = "{Binding ActualWidth,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"
                                    MaxHeight="800"
                                    VerticalScrollBarVisibility="Auto"
                                    HorizontalScrollBarVisibility="Auto" />
                        </ScrollViewer>
                    </TabItem>
 
                    <!-- Configuration TAB -->
                    <TabItem Header="Configuration">
                        <TabControl Name="ConfigurationTabs" Grid.Row="0" Margin="0,20,0,0">
 
                            <!-- RemotePro Main Settings -->
                            <TabItem Header="Main Settings" ToolTip="Interact with RemotePro Main Settings.">
                                <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
 
                                    <!-- Heading bar with Refresh, View Details, Delete, and Add Profile buttons -->
                                    <StackPanel Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Margin="5">
                                        <!-- Refresh Settings Button with Icon -->
                                        <Button x:Name="RefreshSettings"
                                                VerticalAlignment="Top"
                                                ToolTip="Refresh Settings from disk file"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5">
                                            <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Delete Setting Button with Icon -->
                                        <Button x:Name="DeleteSetting"
                                                VerticalAlignment="Top"
                                                ToolTip="Delete selected Setting"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5">
                                            <materialDesign:PackIcon Kind="Delete" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Add Setting Button with Icon -->
                                        <Button x:Name="AddSetting"
                                                VerticalAlignment="Top"
                                                ToolTip="Add a new Setting"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5">
                                            <materialDesign:PackIcon Kind="Plus" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Edit Setting Button with Icon -->
                                        <Button x:Name="EditSetting"
                                                VerticalAlignment="Top"
                                                ToolTip="Edit existing Setting"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5">
                                            <materialDesign:PackIcon Kind="Pencil" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Reset Settings Button with Icon -->
                                        <Button x:Name="ResetSettings"
                                                VerticalAlignment="Top"
                                                ToolTip="Reset settings to default values"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5">
                                            <materialDesign:PackIcon Kind="Alert" Width="24" Height="24"/>
                                        </Button>
                                    </StackPanel>
 
                                    <mdControls:Card Grid.Row="1" Padding="20" Background="Transparent">
                                        <ListView x:Name="Settings"
                                                ToolTip="Modify RemotePro settings and behavior."
                                                SelectionMode="Extended"
                                                Background="Transparent"
                                                HorizontalAlignment="Stretch"
                                                VerticalAlignment="Top"
                                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                                ScrollViewer.HorizontalScrollBarVisibility="Auto">
                                            <ListView.View>
                                                <GridView>
                                                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="200"/>
                                                    <GridViewColumn Header="Value" DisplayMemberBinding="{Binding Value}" Width="300"/>
                                                </GridView>
                                            </ListView.View>
                                        </ListView>
                                    </mdControls:Card>
                                </Grid>
                            </TabItem>
 
                            <!-- ConfigCommands TAB -->
                            <TabItem Header="ConfigCommands" ToolTip="Interact with button mapped commands.">
                                <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
 
                                    <!-- Heading bar with Refresh, View Details, Delete, and Add Profile buttons -->
                                    <Grid Grid.Row="0" HorizontalAlignment="Center" Margin="5">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
 
                                        <!-- Refresh ConfigCommands Button with Icon -->
                                        <Button x:Name="RefreshConfigCommands"
                                                VerticalAlignment="Top"
                                                ToolTip="Refresh ConfigCommands from disk file"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5"
                                                Grid.Column="0">
                                            <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Delete ConfigCommand Button with Icon -->
                                        <Button x:Name="DeleteConfigCommands"
                                                VerticalAlignment="Top"
                                                ToolTip="Delete selected ConfigCommand(s)"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5"
                                                Grid.Column="1">
                                            <materialDesign:PackIcon Kind="Delete" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Add ConfigCommand Button with Icon -->
                                        <Button x:Name="AddConfigCommand"
                                                VerticalAlignment="Top"
                                                ToolTip="Add a new ConfigCommand"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5"
                                                Grid.Column="2">
                                            <materialDesign:PackIcon Kind="Plus" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- Edit ConfigCommand Button with Icon -->
                                        <Button x:Name="EditConfigCommand"
                                                VerticalAlignment="Top"
                                                ToolTip="Edit existing ConfigCommand"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5"
                                                Grid.Column="3">
                                            <materialDesign:PackIcon Kind="Pencil" Width="24" Height="24"/>
                                        </Button>
 
                                        <!-- View ConfigCommand Details Button with Icon -->
                                        <Button x:Name="ResetConfigCommands"
                                                VerticalAlignment="Top"
                                                ToolTip="Reset ConfigCommands to default values"
                                                Style="{StaticResource MaterialDesignFlatButton}"
                                                Margin="5"
                                                Grid.Column="4">
                                            <materialDesign:PackIcon Kind="Alert" Width="24" Height="24"/>
                                        </Button>
                                    </Grid>
 
                                    <!-- DataGrid in Material Design Card with ScrollViewer -->
                                    <materialDesign:Card Name="Commands_Card" Grid.Row="1" Background="{DynamicResource PrimaryHueLightBrush}"
                                        Foreground="{DynamicResource PrimaryHueLightForegroundBrush}" Width="1100" Padding="30" Margin="20,0,0,20">
                                        <StackPanel>
                                            <StackPanel Orientation="Horizontal" Margin="60,0,0,10" HorizontalAlignment="Left">
                                                <materialDesign:PackIcon Kind="FilterVariant" Height="25" Width="25" Margin="0,0,5,0"/>
                                                <TextBox Name="TxtBox_FilterByName" VerticalAlignment="Top" AcceptsReturn="False"
                                                        TextWrapping="Wrap" materialDesign:HintAssist.Hint="Filter By Command Name" />
                                            </StackPanel>
                                            <ScrollViewer Name="Commands_ScrollViewer"
                                                        VerticalScrollBarVisibility="Auto"
                                                        HorizontalScrollBarVisibility="Auto"
                                                        PanningMode="Both">
                                                <DataGrid Name="Commands_DataGrid" ItemsSource="{Binding Commands}" SelectionMode="Extended"
                                                        AutoGenerateColumns="False" SelectionUnit="CellOrRowHeader" CanUserAddRows="False"
                                                        IsReadOnly="True" GridLinesVisibility="Horizontal" CanUserReorderColumns="True"
                                                        materialDesign:DataGridAssist.CellPadding="20,10,0,10"
                                                        materialDesign:DataGridAssist.ColumnHeaderPadding="20,5,0,5"
                                                        MaxHeight="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=ActualHeight}">
 
                                                    <!-- Right-Click Context Menu -->
                                                    <DataGrid.ContextMenu>
                                                        <ContextMenu>
                                                            <MenuItem Header="Copy" Command="ApplicationCommands.Copy"/>
                                                            <MenuItem Header="Paste" Command="ApplicationCommands.Paste"/>
                                                        </ContextMenu>
                                                    </DataGrid.ContextMenu>
 
                                                    <DataGrid.Columns>
                                                        <!-- CheckBox Column -->
                                                        <DataGridTemplateColumn>
                                                            <DataGridTemplateColumn.Header>
                                                                <CheckBox Name="Commands_HeaderChkBox" IsThreeState="True"/>
                                                            </DataGridTemplateColumn.Header>
                                                            <DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <CheckBox IsChecked="{Binding CheckboxSelect, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                                                            Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.Commands_DataGrid_CheckBox_Click}"
                                                                            CommandParameter="{Binding}"/>
                                                                </DataTemplate>
                                                            </DataGridTemplateColumn.CellTemplate>
                                                        </DataGridTemplateColumn>
 
                                                        <!-- Module Name Column -->
                                                        <DataGridTextColumn Binding="{Binding ModuleName}" IsReadOnly="True">
                                                            <DataGridTextColumn.Header>
                                                                <TextBlock Text="Module Name" FontSize="18" />
                                                            </DataGridTextColumn.Header>
                                                        </DataGridTextColumn>
 
                                                        <!-- Command Name Column -->
                                                        <DataGridTextColumn Binding="{Binding CommandName}" Width="180" IsReadOnly="True">
                                                            <DataGridTextColumn.Header>
                                                                <TextBlock Text="Command Name" FontSize="18" />
                                                            </DataGridTextColumn.Header>
                                                        </DataGridTextColumn>
 
                                                        <!-- Description Column -->
                                                        <DataGridTextColumn Binding="{Binding Description}" Width="250" IsReadOnly="True">
                                                            <DataGridTextColumn.Header>
                                                                <TextBlock Text="Description" FontSize="18" />
                                                            </DataGridTextColumn.Header>
                                                        </DataGridTextColumn>
 
                                                        <!-- ID Column -->
                                                        <DataGridTextColumn Binding="{Binding Id}" Width="410" IsReadOnly="True">
                                                            <DataGridTextColumn.Header>
                                                                <TextBlock Text="ID" FontSize="18" />
                                                            </DataGridTextColumn.Header>
                                                        </DataGridTextColumn>
                                                    </DataGrid.Columns>
                                                </DataGrid>
                                            </ScrollViewer>
                                        </StackPanel>
                                    </materialDesign:Card>
                                </Grid>
                            </TabItem>
 
                            <!-- RemotePro Paths -->
                            <TabItem Name="RemoteProPaths" Header="RemotePro Paths" ToolTip="View paths used by the module.">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
 
                                    <!-- Paths List Card -->
                                    <mdControls:Card Grid.Row="0" Padding="20" Margin="0,0,0,20">
                                        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Height="Auto">
                                            <ListBox x:Name="RemoteProPathsListBox"
                                                SelectionMode="Extended"
                                                Background="{DynamicResource MaterialDesignPaper}"
                                                HorizontalAlignment="Stretch"
                                                VerticalAlignment="Stretch"
                                                ScrollViewer.VerticalScrollBarVisibility="Visible"
                                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                                Height="600">
                                                <ListBox.ItemTemplate>
                                                <DataTemplate>
                                                    <Border BorderThickness="0,0,0,1" BorderBrush="LightGray" Padding="10">
                                                    <StackPanel Orientation="Vertical" HorizontalAlignment="Center">
 
                                                        <!-- Centered Command -->
                                                        <TextBlock Text="{Binding Command}"
                                                            FontSize="16"
                                                            FontWeight="Bold"
                                                            Foreground="Black"
                                                            HorizontalAlignment="Center"
                                                            Margin="0,5,0,10"
                                                            Width="600"/>
 
                                                        <!-- Separate ListBox for Paths -->
                                                        <ListBox Background="Transparent"
                                                            BorderThickness="0"
                                                            SelectionMode="Single"
                                                            ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                                            HorizontalAlignment="Center"
                                                            Width="600">
                                                        <ListBoxItem>
                                                            <TextBox Text="{Binding Path}"
                                                                FontSize="14"
                                                                Foreground="Black"
                                                                Background="Transparent"
                                                                BorderThickness="0"
                                                                IsReadOnly="True"
                                                                TextWrapping="Wrap"
                                                                Padding="5"
                                                                Width="600"/>
                                                        </ListBoxItem>
                                                        </ListBox>
                                                    </StackPanel>
                                                    </Border>
                                                </DataTemplate>
                                                </ListBox.ItemTemplate>
                                            </ListBox>
                                        </ScrollViewer>
                                    </mdControls:Card>
                                </Grid>
                            </TabItem>
 
                        </TabControl>
                    </TabItem>
 
                    <!-- ToDo: Heartbeat Tab
                    <TabItem Header="Heartbeat">
                        <ScrollViewer VerticalScrollBarVisibility="Auto">
                            <TextBlock Text="Placeholder content for NHeartbeat" Margin="10" />
                        </ScrollViewer>
                    </TabItem>
                    -->
                </TabControl>
            </Grid>
        </materialDesign:DrawerHost>
    </materialDesign:DialogHost>
</Window>