diff --git a/demo/Ursa.Demo.Desktop/Program.cs b/demo/Ursa.Demo.Desktop/Program.cs index b74f9d3..4b5f190 100644 --- a/demo/Ursa.Demo.Desktop/Program.cs +++ b/demo/Ursa.Demo.Desktop/Program.cs @@ -1,10 +1,14 @@ -using System; -using Avalonia; +using Avalonia; using Avalonia.Dialogs; using Avalonia.Media; +using System; +using System.Runtime.Versioning; namespace Ursa.Demo.Desktop; +[SupportedOSPlatform("windows")] +[SupportedOSPlatform("linux")] +[SupportedOSPlatform("macos")] class Program { // Initialization code. Don't use any Avalonia, third-party APIs or any diff --git a/src/Ursa.Themes.Semi/Controls/NumPad.axaml b/src/Ursa.Themes.Semi/Controls/NumPad.axaml index 372f7d3..f70a947 100644 --- a/src/Ursa.Themes.Semi/Controls/NumPad.axaml +++ b/src/Ursa.Themes.Semi/Controls/NumPad.axaml @@ -1,4 +1,4 @@ - diff --git a/src/Ursa/Controls/IPv4Box/IPv4Box.cs b/src/Ursa/Controls/IPv4Box/IPv4Box.cs index cea14fa..5444bf3 100644 --- a/src/Ursa/Controls/IPv4Box/IPv4Box.cs +++ b/src/Ursa/Controls/IPv4Box/IPv4Box.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; @@ -109,7 +109,7 @@ public class IPv4Box: TemplatedControl } /// - /// ǷʹС + /// 是否使用小键盘输入 /// internal bool IsTargetByNumPad { diff --git a/src/Ursa/Controls/NumPad/NumPad.cs b/src/Ursa/Controls/NumPad/NumPad.cs index 6f81bb7..45228ea 100644 --- a/src/Ursa/Controls/NumPad/NumPad.cs +++ b/src/Ursa/Controls/NumPad/NumPad.cs @@ -1,4 +1,4 @@ -using Avalonia; +using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; @@ -20,7 +20,7 @@ public class NumPad: TemplatedControl } /// - /// Target Ŀڲ TextBox TextPresenter ؼ + /// Target 目标内部的 TextBox 控件 /// private TextBox? _targetInnerText; @@ -64,7 +64,7 @@ public class NumPad: TemplatedControl { if(existing.Target is IPv4Box pv4Box) { - pv4Box.IsTargetByNumPad = false; // ȡ IPv4Box NumPad ģʽ + pv4Box.IsTargetByNumPad = false; // 取消 IPv4Box 的 NumPad 输入模式 } existing.Target = sender as InputElement; existing._targetInnerText = FindTextBoxInTarget((sender as InputElement)!); @@ -107,7 +107,7 @@ public class NumPad: TemplatedControl if (Target is null || o is not NumPadButton b) return; var key = (b.NumMode ? b.NumKey : b.FunctionKey)?? Key.None; - // ڲΪ TextBox Ŀؼʹø TextBox ΪĿ + // 如果存在内部为 TextBox 的目标控件,则使用该 TextBox 作为输入目标 var realTarget = _targetInnerText ?? Target; if (KeyInputMapping.TryGetValue(key, out var s)) { @@ -129,28 +129,28 @@ public class NumPad: TemplatedControl } } /// - /// Ŀؼв TextBox ؼ + /// 在目标控件中查找 TextBox 控件 /// - /// Ŀؼ - /// ҵ TextBoxûҵ򷵻 null + /// 目标控件 + /// 找到的 TextBox,如果没有找到则返回 null private static TextBox? FindTextBoxInTarget(InputElement target) { - // Ŀ걾 TextBox + // 如果目标本身就是 TextBox if (target is TextBox textBox) return textBox; - // Ŀ TemplatedControlѾӦģ + // 如果目标是 TemplatedControl,并且已经应用了模板 if (target is TemplatedControl templatedControl && templatedControl.IsInitialized) { - // ͨģ PART_TextBox + // 尝试通过模板查找 PART_TextBox if (templatedControl.GetTemplateChildren().FirstOrDefault(c => c is TextBox) is TextBox partTextBox) return partTextBox; } - // Ŀ ILogicalʹ LogicalTree չ + // 如果目标是 ILogical,使用 LogicalTree 扩展方法查找 if (target is ILogical logical) { - // ʹ GetLogicalDescendants ߼ӿؼ + // 使用 GetLogicalDescendants 方法查找所有逻辑子控件 var textBoxes = logical.GetLogicalDescendants().OfType(); return textBoxes.FirstOrDefault(); } diff --git a/src/Ursa/Controls/NumericUpDown/IntUpDown.cs b/src/Ursa/Controls/NumericUpDown/IntUpDown.cs index de1ac48..14c5fe0 100644 --- a/src/Ursa/Controls/NumericUpDown/IntUpDown.cs +++ b/src/Ursa/Controls/NumericUpDown/IntUpDown.cs @@ -32,6 +32,10 @@ public class NumericIntUpDown : NumericUpDownBase var result = a - b; return result > Value ? Minimum : result; } + public override void Clear() + { + base.Clear(); + } } public class NumericUIntUpDown : NumericUpDownBase @@ -68,6 +72,10 @@ public class NumericUIntUpDown : NumericUpDownBase var result = a - b; return result > Value ? Minimum : result; } + public override void Clear() + { + base.Clear(); + } } public class NumericDoubleUpDown : NumericUpDownBase @@ -91,6 +99,10 @@ public class NumericDoubleUpDown : NumericUpDownBase protected override double? Add(double? a, double? b) => a + b; protected override double? Minus(double? a, double? b) => a - b; + public override void Clear() + { + base.Clear(); + } } public class NumericByteUpDown : NumericUpDownBase @@ -122,6 +134,10 @@ public class NumericByteUpDown : NumericUpDownBase var result = a - b; return (byte?)(result > Value ? Minimum : result); } + public override void Clear() + { + base.Clear(); + } } public class NumericSByteUpDown : NumericUpDownBase @@ -153,6 +169,10 @@ public class NumericSByteUpDown : NumericUpDownBase var result = a - b; return (sbyte?)(result > Value ? Minimum : result); } + public override void Clear() + { + base.Clear(); + } } public class NumericShortUpDown : NumericUpDownBase @@ -184,6 +204,10 @@ public class NumericShortUpDown : NumericUpDownBase var result = a - b; return (short?)(result > Value ? Minimum : result); } + public override void Clear() + { + base.Clear(); + } } public class NumericUShortUpDown : NumericUpDownBase @@ -215,6 +239,10 @@ public class NumericUShortUpDown : NumericUpDownBase var result = a - b; return (ushort?)(result > Value ? Minimum : result); } + public override void Clear() + { + base.Clear(); + } } public class NumericLongUpDown : NumericUpDownBase @@ -246,6 +274,10 @@ public class NumericLongUpDown : NumericUpDownBase var result = a - b; return result > Value ? Minimum : result; } + public override void Clear() + { + base.Clear(); + } } public class NumericULongUpDown : NumericUpDownBase @@ -269,6 +301,10 @@ public class NumericULongUpDown : NumericUpDownBase protected override ulong? Add(ulong? a, ulong? b) => a + b; protected override ulong? Minus(ulong? a, ulong? b) => a - b; + public override void Clear() + { + base.Clear(); + } } public class NumericFloatUpDown : NumericUpDownBase @@ -292,6 +328,10 @@ public class NumericFloatUpDown : NumericUpDownBase protected override float? Add(float? a, float? b) => a + b; protected override float? Minus(float? a, float? b) => a - b; + public override void Clear() + { + base.Clear(); + } } public class NumericDecimalUpDown : NumericUpDownBase @@ -315,4 +355,9 @@ public class NumericDecimalUpDown : NumericUpDownBase protected override decimal? Add(decimal? a, decimal? b) => a + b; protected override decimal? Minus(decimal? a, decimal? b) => a - b; + + public override void Clear() + { + base.Clear(); + } }