C# 圆形进度条厚度
使用圆形样式时,是否有方法增加progressbar的厚度?C# 圆形进度条厚度,c#,wpf,xaml,material-design-in-xaml,C#,Wpf,Xaml,Material Design In Xaml,使用圆形样式时,是否有方法增加progressbar的厚度? 我在github上找不到任何关于它的文档。基于Robert Harvey的回答,我找到了一个更好的解决方案。我没有复制整个样式,而是通过另一个硬编码值更改硬编码值,而是创建了一个行为来更改厚度值 public class CircularProgressBarBehavior : StyleBehavior<ProgressBar, CircularProgressBarBehavior> { public st
我在github上找不到任何关于它的文档。基于Robert Harvey的回答,我找到了一个更好的解决方案。我没有复制整个样式,而是通过另一个硬编码值更改硬编码值,而是创建了一个行为来更改厚度值
public class CircularProgressBarBehavior : StyleBehavior<ProgressBar, CircularProgressBarBehavior>
{
public static readonly DependencyProperty StrokeThicknessProperty =
DependencyProperty.RegisterAttached("StrokeThickness", typeof(double), typeof(CircularProgressBarBehavior), new PropertyMetadata(3d));
public static double GetStrokeThickness(DependencyObject dependencyObject)
{
return (double) dependencyObject.GetValue(StrokeThicknessProperty);
}
protected override void OnAttached()
{
base.OnAttached();
// ReSharper disable once CompareOfFloatsByEqualityOperator
var path = AssociatedObject.GetChildren<Path>().FirstOrDefault(e => e.Name.Equals("Path"));
if (path != null)
path.StrokeThickness = GetStrokeThickness(AssociatedObject);
}
public static void SetStrokeThickness(DependencyObject dependencyObject, double value)
{
dependencyObject.SetValue(StrokeThicknessProperty, value);
}
}
公共类CircularProgressBarBehavior:StyleBehavior
{
公共静态只读从属属性StrokeThicknessProperty=
从属属性。已注册(“StrokeThickness”、typeof(double)、typeof(CircularProgressBarBehavior)、新属性ymetadata(3d));
公共静态双GetStrokeThickness(DependencyObject DependencyObject)
{
return(double)dependencyObject.GetValue(StrokeThicknessProperty);
}
受保护的覆盖无效附加()
{
base.onatached();
//ReSharper禁用一次比较OffloatsByQualityOperator
var path=AssociatedObject.GetChildren().FirstOrDefault(e=>e.Name.Equals(“path”);
if(路径!=null)
path.StrokeThickness=GetStrokeThickness(关联对象);
}
公共静态void settrokethickness(DependencyObject DependencyObject,双值)
{
SetValue(StrokeThicknessProperty,值);
}
}
在不做XAML之外的任何事情或修改模板的情况下,我解决这个问题的方法是使用以下组合:
- 宽度/高度
- 标度变换
<ProgressBar Style="{StaticResource MaterialDesignCircularProgressBar}" Width="50" Height="50">
<ProgressBar.LayoutTransform>
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="2" ScaleY="2" />
</ProgressBar.LayoutTransform>
</ProgressBar>
MaterialDesignCircularProgressBar
?它看起来就是设置它的地方(StrokeThickness
)。如您所见,它是硬编码的,因此您必须创建一个派生样式来更改它。这会添加到您使用进度条的WPF的xaml.cs(代码隐藏)中吗?另外,我不确定“StyleBehavior”是从什么类型/名称空间来的,因为我缺少“using”指令或程序集引用。