【发布时间】:2014-08-01 05:29:18
【问题描述】:
我需要创建一个圆形ProgressBar 模板。
控制模板:
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid x:Name="TemplateRoot" SnapsToDevicePixels="true">
<Rectangle x:Name="PART_Track" Margin="1" Fill="White" />
<Border x:Name="PART_Indicator" HorizontalAlignment="Left" Margin="1" >
<Grid x:Name="Foreground" >
<Rectangle x:Name="Indicator" Fill="{TemplateBinding Background}" />
<Grid x:Name="Animation" ClipToBounds="true" >
<Rectangle x:Name="PART_GlowRect" Fill="#FF86C7EB"
HorizontalAlignment="Left" Margin="-100,0,0,0" Width="100"/>
</Grid>
</Grid>
</Border>
<Border x:Name="roundBorder" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10" />
<TextBlock />
</Grid>
</ControlTemplate>
这导致:
PART_Indicator 是左侧的 LightBlue 矩形(其宽度在 ProgressBar 控件内部设置,如此处所示,值为 20)和 roundBorder。
我需要将PART_Indicator 夹在roundBorder 上,结果如下:
【问题讨论】:
-
检查this 问题。它可以帮助你
-
顺便说一句,任何人都在看这个问题。下面的答案。遗憾的是,0 票赞成。效果很好。这是要走的路。没有转换器。基于控件的内容对模板没有额外的影响。在保留的同时进行简单的剪辑。
-
@gt 哪一个?
标签: wpf clipping clip opacitymask