From d478fd51292a2accaa2856cc6f81b95ce8abe229 Mon Sep 17 00:00:00 2001 From: Elias Fierke Date: Sun, 18 Jan 2026 16:14:37 +0100 Subject: [PATCH] [feat:] simple MessageBox-lik naming window --- NamingWindow.axaml | 19 ++++++++++++++ NamingWindow.axaml.cs | 60 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 NamingWindow.axaml create mode 100644 NamingWindow.axaml.cs diff --git a/NamingWindow.axaml b/NamingWindow.axaml new file mode 100644 index 0000000..07d2c0e --- /dev/null +++ b/NamingWindow.axaml @@ -0,0 +1,19 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/NamingWindow.axaml.cs b/NamingWindow.axaml.cs new file mode 100644 index 0000000..12c7bc0 --- /dev/null +++ b/NamingWindow.axaml.cs @@ -0,0 +1,60 @@ +using System; +using System.Threading.Tasks; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Logof_Client; + +public partial class NamingWindow : Window +{ + public NamingWindow() + { + AvaloniaXamlLoader.Load(this); + + //InitializeComponent(); + } + + public static Task Show(Window parent, string input = "", string info = "Bitte geben Sie einen Namen ein:") + { + try + { + var wind = new NamingWindow + { + Title = "Name eingeben" + }; + wind.FindControl("Text").Text = info; + var buttonPanel = wind.FindControl("Buttons"); + var inputBox = wind.FindControl("Input"); + + inputBox.Text = input; + string res = null; + + void AddButton(string caption) + { + var btn = new Button { Content = caption }; + btn.Click += (_, __) => + { + res = inputBox.Text; + wind.Close(); + }; + buttonPanel.Children.Add(btn); + } + + AddButton("Ok"); + + + var tcs = new TaskCompletionSource(); + wind.Closed += delegate { tcs.TrySetResult(res); }; + if (parent != null) + wind.ShowDialog(parent); + else wind.Show(); + + return tcs.Task; + } + catch (Exception ex) + { + Console.WriteLine("Error while showing naming window: " + ex.Message); + return null; + } + } +} \ No newline at end of file