Dường như điều khiển Progressive của MahApps.Metro mặc định là Kích thước tối thiểu là 60x60.Thực hiện ProgressRing trong MahApps.Metro Nhỏ hơn
Có một thuộc tính cho ProgressRing được gọi là "IsLarge", nhưng ngay cả khi nó được đặt thành "False" thì dường như không ảnh hưởng đến việc có thể thực hiện cho ProgressRing nhỏ hơn 60x60.
Thay đổi đáng kể các thuộc tính Chiều cao và Chiều rộng cũng không ảnh hưởng đến điều này.
Nhìn GitHUb như mã C# thực tế cho ProgressRing, có vẻ như có một số thuộc tính ảnh hưởng đến đường kính elip, vv, nhưng các thuộc tính này là thuộc tính riêng và không thể được đặt từ các cuộc gọi bên ngoài.
Làm cách nào để tôi có thể làm việc này nhỏ hơn? Nói 20x20 hoặc 30x30?
Trong mã bên dưới, tôi chỉ định IsLarge = False và đặt kích thước là 30x30 nhưng vẫn được đặt mặc định là 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>
Dưới đây là đoạn mã từ "ProgressRing.cs" tập tin tìm thấy trên 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;
}
}
Đặt MinHeight và MinWidth dường như hoạt động, nhưng hiện tại giới hạn có vẻ là 30x30! Nếu tôi cố gắng và đi bất kỳ nhỏ hơn mà nó vẫn như cũ, và tôi đoán vì có phải có một số chiều cao tối thiểu/chiều rộng yêu cầu do đường kính của vòng tròn trong hình elip? ;-) –
Ngoài ra, tôi cũng thử thiết lập chiều cao và chiều rộng cũng như chiều rộng và chiều rộng tới 20x20 và nó vẫn ở mức 30x30. –
@J P: Bạn cần phải giảm chiều rộng/chiều cao của hình elip? Hoặc thiết lập chiều rộng/chiều cao dưới 30x30? Nếu ít hơn, thì bao nhiêu? –