Sembra che il controllo ProgressRing di MahApps.Metro abbia come valore predefinito una dimensione minima di 60x60.Realizza ProgressRing in MahApps.Metro Smaller
Esiste una proprietà per ProgressRing chiamata "IsLarge", ma anche quando è impostata su "False" non sembra avere alcun effetto sulla possibilità di apportare a ProgressRing inferiore a 60x60.
In modo obliquo, la modifica delle proprietà Altezza e Larghezza non influisce su questo.
Considerando GitHUb come il codice C# effettivo per ProgressRing, sembra che ci siano diverse proprietà che influenzano il diametro dell'ellisse, ecc., Ma queste proprietà sono proprietà private e non possono essere impostate da chiamate esterne.
Come posso renderlo più piccolo? Dì 20x20 o 30x30?
Nel codice qui sotto ho specificare IsLarge = False, e impostare la dimensione di 30x30, ma il valore di default ancora a 60x60.
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Orange.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Controls:ProgressRing IsActive="True" IsLarge="False" Height="30" Width="30"></Controls:ProgressRing>
</Grid>
</Window>
Qui di seguito sono frammenti di codice dal file "ProgressRing.cs" riportati sulla GitHub - MahApps.Metro
namespace MahApps.Metro.Controls
{
[TemplateVisualState(Name = "Large", GroupName = "SizeStates")]
[TemplateVisualState(Name = "Small", GroupName = "SizeStates")]
[TemplateVisualState(Name = "Inactive", GroupName = "ActiveStates")]
[TemplateVisualState(Name = "Active", GroupName = "ActiveStates")]
public class ProgressRing : Control
private void SetMaxSideLength(double width)
{
MaxSideLength = width <= 60 ? 60.0 : width;
}
private void SetEllipseDiameter(double width)
{
if (width <= 60)
{
EllipseDiameter = 6.0;
}
else
{
EllipseDiameter = width * 0.1 + 6;
}
}
private void UpdateLargeState()
{
Action action;
if (IsLarge)
action =() => VisualStateManager.GoToState(this, "Large", true);
else
action =() => VisualStateManager.GoToState(this, "Small", true);
if (_deferredActions != null)
_deferredActions.Add(action);
else
action();
}
EDIT: MainWindow.xaml
<Grid>
<Controls:ProgressRing x:Name="PRing" IsLarge="False" MinHeight="15" MinWidth="15" Height="15" Width="15"></Controls:ProgressRing>
</Grid>
EDIT: MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
PRing.EllipseDiameter = 5;
}
}
L'impostazione di MinHeight e MinWidth sembrava funzionare, ma ora il limite sembra essere 30x30! Se provo ad andare più piccolo di quello che rimane lo stesso, e sto indovinando perché ci deve essere un po 'di altezza/larghezza minima richiesta a causa del diametro dei cerchi in ellisse? ;-) –
Inoltre, ho provato anche a impostare l'altezza e la larghezza, nonché il minhight e il minwidth a 20x20, e rimaneva ancora a 30x30. –
@J P: È necessario ridurre la larghezza/altezza dell'ellisse? O imposta la larghezza/altezza inferiore a 30x30? Se meno, allora quanto? –