private void ZoomChart(Chart chartWindow, double newBarDistance){
chartWindow.Dispatcher.InvokeAsync(() =>
{
try
{
if (chartWindow == null)
{
Print("[UpdateBarDistanceUsingProperties] Could not retrieve the Chart window.");
return;
}
// Access ActiveChartControl
var activeChartControl = chartWindow.GetType().GetProperty("ActiveChartControl", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)?.GetValue(chartWindow);
if (activeChartControl == null)
{
Print("[UpdateBarDistanceUsingProperties] ActiveChartControl is null.");
return;
}
// Access Properties field in ActiveChartControl
var propertiesField = activeChartControl.GetType().GetProperty("Properties", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var properties = propertiesField?.GetValue(activeChartControl);
if (properties == null)
{
Print("[UpdateBarDistanceUsingProperties] Properties is null.");
return;
}
// Access and update BarDistance
var barDistanceProperty = properties.GetType().GetProperty("BarDistance", BindingFlags.Public | BindingFlags.Instance);
if (barDistanceProperty != null && barDistanceProperty.CanWrite)
{
// Convert to float before setting
barDistanceProperty.SetValue(properties, (float)newBarDistance);
Print($"[UpdateBarDistanceUsingProperties] BarDistance updated to {newBarDistance}.");
}
else
{
Print("[UpdateBarDistanceUsingProperties] BarDistance property not found or not writable.");
}
}
catch (Exception ex)
{
Print($"[UpdateBarDistanceUsingProperties] Exception: {ex.Message}");
}
chartWindow.ActiveChartControl.BarWidth=13;
});
}
you can call it for all charts like:
foreach (var window in Core.Globals.AllWindows)
{
// check if the found window is a Chart window, if not continue looking
if (!(window is Chart))
continue;
UpdateBarDistanceFromChart(window as Chart);
}

Comment