Es sieht aus wie die MahApps.Metro ProgressRing-Steuerelement standardmäßig auf eine Mindestgröße von 60x60.Machen Sie die ProgressRing in MahApps.Metro Smaller
Es gibt eine Eigenschaft für das ProgressRing namens "IsLarge", aber selbst wenn es auf "False" gesetzt ist, scheint es keinen Effekt zu haben, ProgressRing kleiner als 60x60 zu machen.
Das Ändern der Eigenschaften "Höhe" und "Breite" ändert dies natürlich auch nicht.
Wenn Sie GitHUb als tatsächlichen C# -Code für ProgressRing betrachten, sieht es so aus, als gäbe es mehrere Eigenschaften, die den Ellipsoiddurchmesser usw. beeinflussen. Diese Eigenschaften sind jedoch private Eigenschaften und können nicht von externen Aufrufen festgelegt werden.
Wie kann ich das kleiner machen? Sag 20x20 oder 30x30?
Im folgenden Code spezifiziere ich IsLarge = False und setze die Größe auf 30x30, aber immer noch auf 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>
Im Folgenden sind Code-Schnipsel aus dem "ProgressRing.cs" Datei auf 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 gefunden: 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;
}
}
Einstellung der MinHeight und MinWidth schien zu funktionieren, aber jetzt scheint die Grenze 30x30 zu sein! Wenn ich versuche, kleiner zu gehen, bleibt es gleich, und ich rate, weil es einige minimale Höhe/Breite geben muss, die wegen des Durchmessers der Kreise in der Ellipse erforderlich ist? ;-) –
Außerdem habe ich auch versucht, die Höhe und Breite sowie die MinHeight und Minwidth auf 20x20 zu setzen, und es blieb bei 30x30. –
@J P: Sie müssen die Breite/Höhe der Ellipse verringern? Oder legen Sie die Breite/Höhe von weniger als 30x30? Wenn weniger, wie viel? –