Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 圆形进度条厚度_C#_Wpf_Xaml_Material Design In Xaml - Fatal编程技术网

C# 圆形进度条厚度

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

使用圆形样式时,是否有方法增加progressbar的厚度?
我在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”指令或程序集引用。