Files
CommTester/ParentAvalonia/MainWindow.axaml.cs

106 lines
2.4 KiB
C#

using Avalonia.Controls;
using Avalonia.Interactivity;
namespace ParentAvalonia;
public partial class MainWindow : Window
{
private readonly MainViewModel _vm;
public MainWindow()
{
InitializeComponent();
_vm = new MainViewModel();
DataContext = _vm;
Closed += async (_, __) =>
{
try
{
await _vm.DisposeAsync();
}
catch { }
};
}
private async void StartChildren_Click(object? sender, RoutedEventArgs e)
{
try
{
await _vm.StartChildrenAsync(count: 3);
}
catch (Exception ex)
{
await MessageBoxAsync(ex.Message);
}
}
private async void PingSelected_Click(object? sender, RoutedEventArgs e)
{
try
{
await _vm.PingSelectedAsync();
}
catch (Exception ex)
{
await MessageBoxAsync(ex.Message);
}
}
private async void StartWork_Click(object? sender, RoutedEventArgs e)
{
try
{
await _vm.StartWorkSelectedAsync();
}
catch (Exception ex)
{
await MessageBoxAsync(ex.Message);
}
}
private async void CancelWork_Click(object? sender, RoutedEventArgs e)
{
try
{
await _vm.CancelWorkSelectedAsync();
}
catch (Exception ex)
{
await MessageBoxAsync(ex.Message);
}
}
private async Task MessageBoxAsync(string message)
{
var dlg = new Window
{
Title = "Error",
Width = 500,
Height = 160,
Content = new StackPanel
{
Margin = new Avalonia.Thickness(12),
Spacing = 12,
Children =
{
new TextBlock { Text = message, TextWrapping = Avalonia.Media.TextWrapping.Wrap },
new Button
{
HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right,
Content = "OK",
IsDefault = true,
},
},
},
};
if (dlg.Content is StackPanel sp && sp.Children.LastOrDefault() is Button ok)
{
ok.Click += (_, __) => dlg.Close();
}
await dlg.ShowDialog(this);
}
}