From f7f167f3409d214ef13ae829a75799797b263d35 Mon Sep 17 00:00:00 2001 From: bluepilledgreat <97983689+bluepilledgreat@users.noreply.github.com> Date: Thu, 24 Oct 2024 21:53:46 +0100 Subject: [PATCH] add progressring --- .../Bootstrapper/CustomDialog.Creator.cs | 37 +++++++++++++++++-- wpfui | 2 +- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs index 4a5cf3a..fd103d4 100644 --- a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs +++ b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs @@ -1,5 +1,6 @@ using System.Windows; using System.Windows.Controls; +using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Media; using System.Windows.Media.Imaging; @@ -34,6 +35,7 @@ namespace Bloxstrap.UI.Elements.Bootstrapper ["TitleBar"] = HandleXmlElement_TitleBar, ["Button"] = HandleXmlElement_Button, ["ProgressBar"] = HandleXmlElement_ProgressBar, + ["ProgressRing"] = HandleXmlElement_ProgressRing, ["TextBlock"] = HandleXmlElement_TextBlock, ["MarkdownTextBlock"] = HandleXmlElement_MarkdownTextBlock, ["Image"] = HandleXmlElement_Image, @@ -736,16 +738,21 @@ namespace Bloxstrap.UI.Elements.Bootstrapper return button; } + private static void HandleXmlElement_RangeBase(CustomDialog dialog, RangeBase rangeBase, XElement xmlElement) + { + HandleXmlElement_Control(dialog, rangeBase, xmlElement); + + rangeBase.Value = ParseXmlAttribute(xmlElement, "Value", 0); + rangeBase.Maximum = ParseXmlAttribute(xmlElement, "Maximum", 100); + } + private static UIElement HandleXmlElement_ProgressBar(CustomDialog dialog, XElement xmlElement) { var progressBar = new Wpf.Ui.Controls.ProgressBar(); - HandleXmlElement_Control(dialog, progressBar, xmlElement); + HandleXmlElement_RangeBase(dialog, progressBar, xmlElement); progressBar.IsIndeterminate = ParseXmlAttribute(xmlElement, "IsIndeterminate", false); - progressBar.Value = ParseXmlAttribute(xmlElement, "Value", 0); - progressBar.Maximum = ParseXmlAttribute(xmlElement, "Maximum", 100); - object? cornerRadius = GetCornerRadiusFromXElement(xmlElement, "CornerRadius"); if (cornerRadius != null) progressBar.CornerRadius = (CornerRadius)cornerRadius; @@ -769,6 +776,28 @@ namespace Bloxstrap.UI.Elements.Bootstrapper return progressBar; } + private static UIElement HandleXmlElement_ProgressRing(CustomDialog dialog, XElement xmlElement) + { + var progressBar = new Wpf.Ui.Controls.ProgressRing(); + HandleXmlElement_RangeBase(dialog, progressBar, xmlElement); + + progressBar.IsIndeterminate = ParseXmlAttribute(xmlElement, "IsIndeterminate", false); + + if (xmlElement.Attribute("Name")?.Value == "PrimaryProgressRing") + { + Binding isIndeterminateBinding = new Binding("ProgressIndeterminate") { Mode = BindingMode.OneWay }; + BindingOperations.SetBinding(progressBar, Wpf.Ui.Controls.ProgressRing.IsIndeterminateProperty, isIndeterminateBinding); + + Binding maximumBinding = new Binding("ProgressMaximum") { Mode = BindingMode.OneWay }; + BindingOperations.SetBinding(progressBar, Wpf.Ui.Controls.ProgressRing.MaximumProperty, maximumBinding); + + Binding valueBinding = new Binding("ProgressValue") { Mode = BindingMode.OneWay }; + BindingOperations.SetBinding(progressBar, Wpf.Ui.Controls.ProgressRing.ValueProperty, valueBinding); + } + + return progressBar; + } + private static void HandleXmlElement_TextBlock_Base(CustomDialog dialog, TextBlock textBlock, XElement xmlElement) { HandleXmlElement_FrameworkElement(dialog, textBlock, xmlElement); diff --git a/wpfui b/wpfui index 05dad87..9a76450 160000 --- a/wpfui +++ b/wpfui @@ -1 +1 @@ -Subproject commit 05dad87af09d6bbf39f657a444128b1e814993a5 +Subproject commit 9a76450240ff34aeae0d5fc1e66d9dbf29949335