- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
看起来 MahApps.Metro ProgressRing 控件默认的最小尺寸为 60x60。
ProgressRing 有一个名为“IsLarge”的属性,但即使将其设置为“False”,它似乎也无法使 ProgressRing 小于 60x60。
显然,更改 Height 和 Width 属性也不会对此产生影响。
在 GitHUb 上看作为 ProgressRing 的实际 c# 代码,看起来有几个属性可以影响椭圆直径等,但这些属性是私有(private)属性,不能从外部调用设置。
我怎样才能把它变小?说 20x20 还是 30x30?
在下面的代码中,我指定了 IsLarge=False,并将大小设置为 30x30,但它仍然默认为 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>
以下是在 GitHub - MahApps.Metro 上找到的“ProgressRing.cs”文件中的代码片段
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();
}
编辑:MainWindow.xaml
<Grid>
<Controls:ProgressRing x:Name="PRing" IsLarge="False" MinHeight="15" MinWidth="15" Height="15" Width="15"></Controls:ProgressRing>
</Grid>
编辑:MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
PRing.EllipseDiameter = 5;
}
}
最佳答案
您必须为 ProgressRing
找到一种样式,并为自己设置 Width
和 Height
。对我来说,样式位于:MahApps.Metro master\MahApps.Metro\Themes\ProgressRing.xaml
:
<Style TargetType="{x:Type Controls:ProgressRing}">
<Setter Property="Foreground" Value="{DynamicResource AccentColorBrush}"/>
<Setter Property="IsHitTestVisible" Value="False"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="MinHeight" Value="30"/>
<Setter Property="MinWidth" Value="30"/>
...
默认有60
的Width
和Height
。据我了解,简单设置 Width
和 Height
仅直接影响椭圆。
编辑:
什么会使环更小,您可以通过代码使用参数 EllipseDiameter
和 EllipseOffset
,因为 XAML 它们将不可用(如 私有(private))。
private void SetEllipseDiameter(double width)
{
if (width <= 60)
{
EllipseDiameter = 3.0; // as default 6.0
}
else
{
EllipseDiameter = width * 0.1 + 6;
}
}
private void SetEllipseOffset(double width)
{
if (width <= 60)
{
EllipseOffset = new Thickness(0, 12, 0, 0); // as default 24
}
else
{
EllipseOffset = new Thickness(0, width * 0.4 + 12, 0, 0);
}
}
EDIT2:
要设置Ellipse
的直径可以按如下方式完成。我们确实有属性EllipseDiameter
setter public:
public double EllipseDiameter
{
get
{
return (double)GetValue(EllipseDiameterProperty);
}
set // default as private
{
SetValue(EllipseDiameterProperty, value);
}
}
在 SetEllipseDiameter
中正在检查 Ellipse
的大小,如果 Width
小于 60,则设置 6.0。我们注释掉。
private void SetEllipseDiameter(double width)
{
//if (width <= 60)
//{
// EllipseDiameter = 6.0;
//}
//else
//{
// EllipseDiameter = width * 0.1 + 6;
//}
}
然后在 Style
中设置 Ellipse
的直径:
<Setter Property="MinHeight" Value="30"/>
<Setter Property="MinWidth" Value="30"/>
<Setter Property="EllipseDiameter" Value="3.0" />
EllipseOffset
也是如此。他也是,一开始是private,并检查小于 60 的 Width
:
private void SetEllipseOffset(double width)
{
// you can drop this check
if (width <= 60)
{
EllipseOffset = new Thickness(0, 24, 0, 0);
}
else
{
EllipseOffset = new Thickness(0, width * 0.4 + 24, 0, 0);
}
}
使用这些参数进行这些操作,您可以配置ProgressRing
控件的Width
和Height
。
关于c# - 缩小 MahApps.Metro 中的 ProgressRing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774185/
我在 WPF(C#) 中定义了一个带有绑定(bind)项源的 SplitButton。 只有当用户单击 SplitButton 右侧的箭头时,项目列表才会展开。 当用户点击SplitButton区域时
任何人都可以建议我如何在 MahApps Metro 布局中实现图 block 的拖放。谢谢.. 最佳答案 我们使用 punker76 的另一个库取得了成功。 它轻量级且易于实现! GitHub ht
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
我有一个使用默认颜色加载的 MetroWindow。我有一个选项供用户更改样式。在窗口中,我使用内容控件在初始化此窗口时从代码隐藏动态设置用户控件(此窗口是从另一个应用程序初始化的,因此没有 app.
我使用的是 MahApps.Metro 版本 1.2.0.0。我已将主题设置为深色主题。这在我运行应用程序时工作正常,但仍然在我的设计器中显示浅色主题。 关于导致此问题的原因的想法? 最佳答案 我在
这是我的按钮: 和 content使用此 Style 时总是使用小写字母 最佳答案 你应该使用 Controls:ButtonHelper.PreserveTextCase="True" 以防止小写
我开始介绍 MahApps .Metro(真的很棒)在我的 WPF 应用程序中,我最喜欢的按钮是默认的。问题是它把我所有的文本都大写,我不想要它。 最佳答案 您可以通过为 Window.Resourc
我想将 MahApps 库中的图标放入普通按钮中。我是这样试的: 结局是这样的: 那么如何将这个图标整合到这个按钮的合适位置呢? 最佳答案 您有 2 个选择。 首先,您可以使用图标资源(带有 Met
我正在使用Mahapps,但无法为窗口标题和组框标题等设置适当的大小写。 我尝试了谷歌搜索和版式设置。 如果有人知道你可以在这里帮我。 谢谢 最佳答案 新版本: 窗口标题 组框 设置样式(选项1)或
目前我正在使用 这就是结果: 我还发现了这种支持的颜色:https://github.com/MahApps/MahApps.Metro/tree/master/MahApps.Metro/Style
我正在尝试设置 SimpleChildWindow来自 MahApps 包 不幸的是,我无法理解示例并有几个问题: 它说: Directly in XAML 我应该把它放在哪里? 在父窗口中还是在单独
我正在使用 MahApps在 WPF 项目上,我正在尝试使用 MahApps 的内置样式对 DataGrid 控件提供一些验证, 但我定义的验证样式没有显示。 DataGrid 是:
如何为 Mahapps MetroWindow 添加从全屏模式到窗口模式的动态切换功能,反之亦然? 从普通窗口开始 切换到全屏后,右上角的窗口按钮(最小化/最大化/关闭)仍然可见(但它们不应该像标题栏
首先,非常感谢 MahApps。多么酷的项目! 我有一个用 WPF 编写的应用程序,我已经应用了 MahApps 库。我使用了本教程: http://mahapps.com/guides/quick-
我正在使用 MahApps Metro 窗口样式,并且我想在用户单击窗口的关闭按钮时捕获事件。 我已将 ShutdownMode 设置为 OnExplicitShutdown,所以我需要调用 Appl
有没有办法在 mahapps 地铁中根据每个控件更改主题(亮/暗)? 我的问题是,我有一个使用 Light 主题的窗口,但我有一部分的背景非常暗,我无法让 ComboBox 正确显示,即使我更改了背景
我正在尝试使用 MahApps.Metro 0.13.1.0 在窗口标题栏中添加一个“刷新”按钮。 我的 App.xaml 是这样的:
我有 ComboBox和每个索引我想改变这个 Watermark因此。 是否可以更改此 Property通过背后的代码? 最佳答案 如 mytextBox不在模板内或不同的名称范围内,您可以在代码中
有没有办法改变 MetroWindow 中的按钮前景? 我什至试图覆盖 IronicallyNamedChromelessButtonStyle 但前景色仍然相同。 编辑: 按钮位于窗口栏中(例如关闭
我是一名优秀的程序员,十分优秀!