add progressring

This commit is contained in:
bluepilledgreat 2024-10-24 21:53:46 +01:00
parent 611f2f1c91
commit f7f167f340
2 changed files with 34 additions and 5 deletions

View File

@ -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<double>(xmlElement, "Value", 0);
rangeBase.Maximum = ParseXmlAttribute<double>(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<bool>(xmlElement, "IsIndeterminate", false);
progressBar.Value = ParseXmlAttribute<double>(xmlElement, "Value", 0);
progressBar.Maximum = ParseXmlAttribute<double>(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<bool>(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);

2
wpfui

@ -1 +1 @@
Subproject commit 05dad87af09d6bbf39f657a444128b1e814993a5
Subproject commit 9a76450240ff34aeae0d5fc1e66d9dbf29949335