diff --git a/samples/ControlCatalog/ControlCatalog.csproj b/samples/ControlCatalog/ControlCatalog.csproj index a3d7a0cdce..c3f14b045d 100644 --- a/samples/ControlCatalog/ControlCatalog.csproj +++ b/samples/ControlCatalog/ControlCatalog.csproj @@ -78,6 +78,9 @@ Designer + + Designer + Designer @@ -169,6 +172,9 @@ ButtonSpinnerPage.xaml + + + NumbersPage.xaml diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index 142d0d42b1..f8976401e7 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -19,6 +19,7 @@ + diff --git a/samples/ControlCatalog/Pages/NumbersPage.xaml b/samples/ControlCatalog/Pages/NumbersPage.xaml new file mode 100644 index 0000000000..fa1990b472 --- /dev/null +++ b/samples/ControlCatalog/Pages/NumbersPage.xaml @@ -0,0 +1,96 @@ + + + Numeric up-down controls + Numeric up-down controls provide a TextBox with button spinners that allow incrementing and decrementing numeric values by using the spinner buttons, keyboard up/down arrows, or mouse wheel. + The following controls are available to support various native numeric types: + ByteUpDown, ShortUpDown, IntegerUpDown, LongUpDown, SingleUpDown, DoubleUpDown, DecimalUpDown. + + Features: + + + ShowButtonSpinner: + + + IsReadOnly: + + + AllowSpin: + + + ClipValueToMinMax: + + + DisplayDefaultValueOnEmptyText: + + + + FormatString: + + + + + + + + + + + + + ButtonSpinnerLocation: + + + CultureInfo: + + + Watermark: + + + Text: + + + + Minimum: + + + Maximum: + + + Increment: + + + Value: + + + DefaultValue: + + + + + + DoubleUpDown and SingleUpDown support the AllowInputSpecialValues property + + AllowInputSpecialValues: + + + + + Usage of DoubleUpDown: + + + + + \ No newline at end of file diff --git a/samples/ControlCatalog/Pages/NumbersPage.xaml.cs b/samples/ControlCatalog/Pages/NumbersPage.xaml.cs new file mode 100644 index 0000000000..a68bdc3bcf --- /dev/null +++ b/samples/ControlCatalog/Pages/NumbersPage.xaml.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.Markup.Xaml; +using ReactiveUI; + +namespace ControlCatalog.Pages +{ + public class NumbersPage : UserControl + { + public NumbersPage() + { + this.InitializeComponent(); + var viewModel = new NumbersPageViewModel(); + DataContext = viewModel; + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + + } + + public class NumbersPageViewModel : ReactiveObject + { + private IList _formats; + private FormatObject _selectedFormat; + private IList _spinnerLocations; + private IList _allowedSpecialValues; + + public NumbersPageViewModel() + { + SelectedFormat = Formats.FirstOrDefault(); + } + + public IList Formats + { + get + { + return _formats ?? (_formats = new List() + { + new FormatObject() {Name = "Currency", Value = "C2"}, + new FormatObject() {Name = "Fixed point", Value = "F2"}, + new FormatObject() {Name = "General", Value = "G"}, + new FormatObject() {Name = "Number", Value = "N"}, + new FormatObject() {Name = "Percent", Value = "P"}, + new FormatObject() {Name = "Degrees", Value = "{0:N2} °"}, + }); + } + } + + public IList SpinnerLocations + { + get + { + if (_spinnerLocations == null) + { + _spinnerLocations = new List(); + foreach (Location value in Enum.GetValues(typeof(Location))) + { + _spinnerLocations.Add(value); + } + } + return _spinnerLocations ; + } + } + + public IList Cultures { get; } = new List() + { + new CultureInfo("en-US"), + new CultureInfo("en-GB"), + new CultureInfo("fr-FR"), + new CultureInfo("ar-DZ"), + new CultureInfo("zh-CN"), + new CultureInfo("cs-CZ") + }; + + public IList AllowedSpecialValues + { + get + { + if (_allowedSpecialValues == null) + { + _allowedSpecialValues = new List(); + foreach (AllowedSpecialValues value in Enum.GetValues(typeof(AllowedSpecialValues))) + { + _allowedSpecialValues.Add(value); + } + } + return _allowedSpecialValues; + } + } + + public FormatObject SelectedFormat + { + get { return _selectedFormat; } + set { this.RaiseAndSetIfChanged(ref _selectedFormat, value); } + } + } + + public class FormatObject + { + public string Value { get; set; } + public string Name { get; set; } + } +}