我想在UserControl中使用MetroProgressBar。

<UserControl x:Class="WpfApplication7.UserControl1">
    <StackPanel Background="#ccc">
        <controls:MetroProgressBar IsIndeterminate="True"/>
    </StackPanel>
</UserControl>


工作正常。但是现在我需要在用户控件中支持外部内容。
因此,我创建了一个新的“ UserControl2”进行演示:

<UserControl x:Class="WpfApplication7.UserControl2">
    <UserControl.Resources>
        <Style TargetType="{x:Type local:UserControl2}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:UserControl2}">
                        <StackPanel Background="#ccc">
                            <controls:MetroProgressBar IsIndeterminate="True"/>
                            <!--<ContentPresenter/>-->
                        </StackPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
</UserControl>


然后,将两个控件都放入表单:

<StackPanel>
        <local:UserControl1 Background="#ccc"/>
        <local:UserControl2 Background="#ccc" Margin="0,6,0,0"/>
</StackPanel>


结果,我看到UserControl2没有显示进度栏。
我该如何解决?

c# - MahApps MetroProgressBar在ControlTemplate内部不起作用-LMLPHP

注意:在设计器中,UserControl2通过进度条按预期方式呈现。

最佳答案

UserControl2的样式中,将属性EllipseDiameterEllipseOffset设置为某个值(默认值为4),如下所示:

c# - MahApps MetroProgressBar在ControlTemplate内部不起作用-LMLPHP

 <Style TargetType="{x:Type local:UserControl2}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:UserControl2}">
                    <StackPanel Background="#ccc">
                        <controls:MetroProgressBar EllipseDiameter="12"
                                                   EllipseOffset="12"
                                                   IsIndeterminate="True"/>
                        <!--<ContentPresenter/>-->
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

10-04 16:57