Untitled

 avatar
unknown
plain_text
2 years ago
1.4 kB
5
Indexable
using System.Windows;
using System.Windows.Media;

public class ViewModel
{
    public Point GetCircularProgressBarCenter(FrameworkElement rootElement)
    {
        // Find the circular progress bar within the visual tree
        CircularProgressBar circularProgressBar = FindCircularProgressBar(rootElement);

        if (circularProgressBar != null)
        {
            // Calculate the center point of the circular progress bar
            Point circularProgressBarCenter = new Point(
                circularProgressBar.ActualWidth / 2,
                circularProgressBar.ActualHeight / 2);

            return circularProgressBar.TransformToAncestor(rootElement).Transform(circularProgressBarCenter);
        }

        // Return a default point if circular progress bar is not found
        return new Point();
    }

    private CircularProgressBar FindCircularProgressBar(DependencyObject parent)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(parent, i);
            if (child is CircularProgressBar circularProgressBar)
            {
                return circularProgressBar;
            }
            else
            {
                CircularProgressBar result = FindCircularProgressBar(child);
                if (result != null)
                    return result;
            }
        }

        return null;
    }
}
Editor is loading...