Bruce Wayne 5 gadi atpakaļ
vecāks
revīzija
05d2f6978a

+ 0 - 26
NatTypeTester/App.cs

@@ -1,26 +0,0 @@
-using System;
-using System.Reflection;
-using System.Windows;
-using ReactiveUI;
-using Splat;
-
-namespace NatTypeTester
-{
-    internal static class App
-    {
-        [STAThread]
-        private static void Main()
-        {
-            var app = new Application();
-            var win = new MainWindow();
-
-            Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetCallingAssembly());
-
-            app.MainWindow = win;
-            win.Show();
-
-            app.ShutdownMode = ShutdownMode.OnMainWindowClose;
-            app.Run();
-        }
-    }
-}

+ 15 - 0
NatTypeTester/App.xaml

@@ -0,0 +1,15 @@
+<Application
+	x:Class="NatTypeTester.App"
+	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+	xmlns:ui="http://schemas.modernwpf.com/2019"
+	Startup="Application_Startup">
+	<Application.Resources>
+		<ResourceDictionary>
+			<ResourceDictionary.MergedDictionaries>
+				<ui:ThemeResources />
+				<ui:XamlControlsResources />
+			</ResourceDictionary.MergedDictionaries>
+		</ResourceDictionary>
+	</Application.Resources>
+</Application>

+ 17 - 0
NatTypeTester/App.xaml.cs

@@ -0,0 +1,17 @@
+using ReactiveUI;
+using Splat;
+using System.Reflection;
+using System.Windows;
+
+namespace NatTypeTester
+{
+    public partial class App
+    {
+        private void Application_Startup(object sender, StartupEventArgs e)
+        {
+            Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetCallingAssembly());
+            MainWindow = new MainWindow();
+            MainWindow.Show();
+        }
+    }
+}

+ 111 - 138
NatTypeTester/MainWindow.xaml

@@ -5,161 +5,134 @@
 	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 	xmlns:reactiveUi="http://reactiveui.net"
 	xmlns:viewModels="clr-namespace:NatTypeTester.ViewModels"
+	xmlns:ui="http://schemas.modernwpf.com/2019"
 	Title="NatTypeTester"
-	Width="600"
+	Width="500"
 	WindowStartupLocation="CenterScreen"
-	SizeToContent="Height"
-	ResizeMode="CanMinimize"
-	Topmost="False">
-
-	<Window.Resources>
-		<SolidColorBrush x:Key="DisabledBackgroundBrush" Color="LightGray" />
-		<Style TargetType="{x:Type TextBox}">
-			<Style.Triggers>
-				<Trigger Property="IsReadOnly" Value="True">
-					<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}" />
-				</Trigger>
-			</Style.Triggers>
-		</Style>
-	</Window.Resources>
+	Height="480"
+	ui:WindowHelper.UseModernWindowStyle="True">
 
 	<Grid>
-		<StackPanel>
-			<Grid Margin="0,5,5,5">
-				<Grid.ColumnDefinitions>
-					<ColumnDefinition Width="Auto"/>
-					<ColumnDefinition />
-				</Grid.ColumnDefinitions>
-				<TextBlock Grid.Row="0" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="STUN Server" />
-				<ComboBox Grid.Column="1" x:Name="ServersComboBox"
-						Height="23.24"  IsEditable="True"
-						SelectedIndex="0" VerticalContentAlignment="Center">
-					<ComboBox.ItemTemplate>
-						<DataTemplate>
-							<TextBlock Text="{Binding}" />
-						</DataTemplate>
-					</ComboBox.ItemTemplate>
-				</ComboBox>
-			</Grid>
-			<Grid>
-				<Grid.ColumnDefinitions>
-					<ColumnDefinition Width="4*"/>
-					<ColumnDefinition Width="5*" />
-				</Grid.ColumnDefinitions>
-				<Grid Margin="0,0,5,5">
-					<Grid.RowDefinitions>
-						<RowDefinition Height="Auto" />
-						<RowDefinition Height="Auto" />
-					</Grid.RowDefinitions>
-					<Grid Margin="0,0,0,5" Grid.Column="0">
+		<DockPanel>
+			<ComboBox DockPanel.Dock="Top"
+				x:Name="ServersComboBox"
+				ui:ControlHelper.Header="STUN Server"
+				IsEditable="True"
+				SelectedIndex="0" VerticalContentAlignment="Center"
+				Margin="10,10"
+				HorizontalAlignment="Stretch">
+				<ComboBox.ItemTemplate>
+					<DataTemplate>
+						<TextBlock Text="{Binding}" />
+					</DataTemplate>
+				</ComboBox.ItemTemplate>
+			</ComboBox>
+
+			<TabControl  TabStripPlacement="Left">
+				<TabItem Header="RFC 5780" x:Name="RFC5780Tab">
+					<Grid>
 						<Grid.RowDefinitions>
 							<RowDefinition Height="Auto"/>
-							<RowDefinition Height="Auto"/>
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+							<RowDefinition />
 						</Grid.RowDefinitions>
-						<RadioButton Grid.Row="0" Content="Don't use Proxy" GroupName="ProxyTypeGroup" x:Name="ProxyTypeNoneRadio" Margin="5" IsChecked="True"/>
-						<RadioButton Grid.Row="1" Content="SOCKS5" GroupName="ProxyTypeGroup" x:Name="ProxyTypeSocks5Radio" Margin="5" IsChecked="False" />
+						<TextBox
+							x:Name="BindingTestTextBox" Grid.Row="0"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Binding test" />
+						<TextBox
+							x:Name="MappingBehaviorTextBox" Grid.Row="1"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Mapping behavior" />
+						<TextBox
+							x:Name="FilteringBehaviorTextBox" Grid.Row="2"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Filtering behavior" />
+						<TextBox
+							x:Name="LocalAddressTextBox" Grid.Row="3"
+							Margin="10,5" IsReadOnly="False"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Local end" />
+						<TextBox
+							x:Name="MappingAddressTextBox" Grid.Row="4"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Public end" />
+
+						<Button x:Name="DiscoveryButton" Grid.Row="5" HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="Test" Margin="0,10,10,10" />
 					</Grid>
-					<Grid x:Name="ProxyConfigGrid" Margin="0" Grid.Row="1" IsEnabled="False">
+				</TabItem>
+				<TabItem Header="RFC 3489" x:Name="RFC3489Tab">
+					<Grid>
 						<Grid.RowDefinitions>
-							<RowDefinition/>
-							<RowDefinition/>
-							<RowDefinition/>
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+							<RowDefinition />
 						</Grid.RowDefinitions>
-						<Grid.ColumnDefinitions>
-							<ColumnDefinition Width="Auto" MinWidth="100"/>
-							<ColumnDefinition/>
-						</Grid.ColumnDefinitions>
-						<TextBox x:Name="ProxyServerTextBox" Grid.Row="0" Grid.Column="1"
-						         Height="23.25" Margin="5" IsReadOnly="False"
-						         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-						<TextBox x:Name="ProxyUsernameTextBox" Grid.Row="1" Grid.Column="1"
-						         Height="23.25" Margin="5" IsReadOnly="False"
-						         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-						<TextBox x:Name="ProxyPasswordTextBox" Grid.Row="2" Grid.Column="1"
-						         Height="23.25" Margin="5"
-						         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-						<TextBlock Grid.Row="0" Grid.Column="0" Margin="5" VerticalAlignment="Center" Text="Server" />
-						<TextBlock Grid.Row="1" Grid.Column="0" Margin="5" VerticalAlignment="Center" Text="User ID" />
-						<TextBlock Grid.Row="2" Grid.Column="0" Margin="5" VerticalAlignment="Center" Text="Password" />
-					</Grid>
-				</Grid>
 
-				<TabControl Grid.Column="1" >
-					<TabItem Header="RFC 5780" x:Name="RFC5780Tab">
-						<Grid>
+						<TextBox x:Name="NatTypeTextBox" Grid.Row="0"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="NAT type" />
+						<TextBox x:Name="LocalEndTextBox" Grid.Row="1"
+							Margin="10,5"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Local end" />
+						<TextBox x:Name="PublicEndTextBox" Grid.Row="2"
+							Margin="10,5" IsReadOnly="True"
+							VerticalContentAlignment="Center" VerticalAlignment="Center"
+							ui:ControlHelper.Header="Public end" />
+
+						<Button x:Name="TestButton" Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="Test" Margin="0,0,10,10"/>
+					</Grid>
+				</TabItem>
+				<TabItem Header="Proxy">
+					<Grid>
+						<Grid.RowDefinitions>
+							<RowDefinition Height="Auto" />
+							<RowDefinition Height="Auto" />
+						</Grid.RowDefinitions>
+						<Grid Margin="10,0" Grid.Column="0">
 							<Grid.RowDefinitions>
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
+								<RowDefinition Height="Auto"/>
+								<RowDefinition Height="Auto"/>
 							</Grid.RowDefinitions>
-							<Grid.ColumnDefinitions>
-								<ColumnDefinition Width="Auto" />
-								<ColumnDefinition />
-								<ColumnDefinition Width="65" />
-							</Grid.ColumnDefinitions>
-							<TextBlock Grid.Row="0" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Binding test" />
-							<TextBlock Grid.Row="1" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Mapping behavior" />
-							<TextBlock Grid.Row="2" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Filtering behavior" />
-							<TextBlock Grid.Row="3" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Local end" />
-							<TextBlock Grid.Row="4" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Public end" />
-
-							<TextBox x:Name="BindingTestTextBox" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2"
-					         Height="23.24" Margin="5" IsReadOnly="True"
-					         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-							<TextBox x:Name="MappingBehaviorTextBox" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
-					         Height="23.24" Margin="5" IsReadOnly="True"
-					         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-							<TextBox x:Name="FilteringBehaviorTextBox" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"
-					         Height="23.24" Margin="5" IsReadOnly="True"
-					         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-							<TextBox x:Name="LocalAddressTextBox" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2"
-					         Height="23.24" Margin="5" IsReadOnly="False"
-					         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-							<TextBox x:Name="MappingAddressTextBox" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2"
-					         Height="23.24" Margin="5" IsReadOnly="True"
-					         VerticalContentAlignment="Center" VerticalAlignment="Center" />
-
-							<Button x:Name="DiscoveryButton" Grid.Row="5" Grid.Column="2" Content="Test" Margin="5" />
+							<RadioButton Grid.Row="0" Content="Don't use Proxy" GroupName="ProxyTypeGroup" x:Name="ProxyTypeNoneRadio" IsChecked="True"/>
+							<RadioButton Grid.Row="1" Content="SOCKS5" GroupName="ProxyTypeGroup" x:Name="ProxyTypeSocks5Radio" IsChecked="False" />
 						</Grid>
-					</TabItem>
-					<TabItem Header="RFC 3489" x:Name="RFC3489Tab">
-						<Grid>
+						<Grid x:Name="ProxyConfigGrid" Margin="10,5" Grid.Row="1" IsEnabled="False">
 							<Grid.RowDefinitions>
-								<RowDefinition Height="29"/>
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
-								<RowDefinition />
+								<RowDefinition Height="Auto" />
+								<RowDefinition Height="Auto" />
+								<RowDefinition Height="Auto"/>
 							</Grid.RowDefinitions>
-							<Grid.ColumnDefinitions>
-								<ColumnDefinition Width="Auto" />
-								<ColumnDefinition />
-								<ColumnDefinition Width="65" />
-							</Grid.ColumnDefinitions>
-
-							<TextBlock Grid.Row="1" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="NAT type" />
-							<TextBlock Grid.Row="2" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Local end" />
-							<TextBlock Grid.Row="3" Grid.Column="0" Margin="5,0" VerticalAlignment="Center" Text="Public end" />
-
-							<TextBox x:Name="NatTypeTextBox" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
-							Height="23.25" Margin="5" IsReadOnly="True"
-							VerticalContentAlignment="Center" VerticalAlignment="Center"/>
-							<TextBox x:Name="LocalEndTextBox" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"
-							Height="23.25" Margin="5"
-							VerticalContentAlignment="Center" VerticalAlignment="Center" />
-							<TextBox x:Name="PublicEndTextBox" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2"
-							Height="23.25" Margin="5" IsReadOnly="True"
-							VerticalContentAlignment="Center" VerticalAlignment="Center" />
-
-							<Button x:Name="TestButton" Grid.Row="4" Grid.Column="2" Content="Test" Margin="5"/>
+							<TextBox
+								x:Name="ProxyServerTextBox" Grid.Row="0"
+								Margin="0,5" IsReadOnly="False"
+								VerticalContentAlignment="Center" VerticalAlignment="Center"
+								ui:ControlHelper.Header="Server" />
+							<TextBox
+								x:Name="ProxyUsernameTextBox" Grid.Row="1"
+								Margin="0,5" IsReadOnly="False"
+								VerticalContentAlignment="Center" VerticalAlignment="Center"
+								ui:ControlHelper.Header="User ID" />
+							<TextBox 
+								x:Name="ProxyPasswordTextBox" Grid.Row="2"
+								Margin="0,5"
+								VerticalContentAlignment="Center" VerticalAlignment="Center"
+								ui:ControlHelper.Header="Password" />
 						</Grid>
-					</TabItem>
-				</TabControl>
+					</Grid>
+				</TabItem>
+			</TabControl>
 
-			</Grid>
-		</StackPanel>
+		</DockPanel>
 	</Grid>
 </reactiveUi:ReactiveWindow>

+ 3 - 1
NatTypeTester/MainWindow.xaml.cs

@@ -1,4 +1,5 @@
-using NatTypeTester.ViewModels;
+using ModernWpf;
+using NatTypeTester.ViewModels;
 using ReactiveUI;
 using STUN.Enums;
 using System;
@@ -16,6 +17,7 @@ namespace NatTypeTester
         {
             InitializeComponent();
             ViewModel = new MainWindowViewModel();
+            ThemeManager.Current.ApplicationTheme = null;
 
             this.WhenActivated(d =>
             {

+ 4 - 3
NatTypeTester/NatTypeTester.csproj

@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
+<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
 
   <PropertyGroup>
     <OutputType>WinExe</OutputType>
@@ -19,8 +19,9 @@
 
   <ItemGroup>
     <PackageReference Include="Costura.Fody" Version="4.1.0" />
-    <PackageReference Include="ReactiveUI.Events.WPF" Version="11.5.17" />
-    <PackageReference Include="ReactiveUI.WPF" Version="11.5.17" />
+    <PackageReference Include="ModernWpfUI" Version="0.9.2" />
+    <PackageReference Include="ReactiveUI.Events.WPF" Version="11.5.35" />
+    <PackageReference Include="ReactiveUI.WPF" Version="11.5.35" />
   </ItemGroup>
 
   <ItemGroup>