В следующем примере при изменении размера сетки размер области отсечения остается в том виде, как он выражен в абсолютных координатах.
<Grid Clip="M10,10 L10,150 L150,150 L150,10 Z">
<Rectangle Fill="Red"/>
</Grid>
Можно ли как-то обрезать область так, чтобы геометрия отсечения масштабировалась вместе с обрезанным объектом?
Кодовые решения не принимаются, потому что это должно использоваться в шаблоне управления. Кроме того, область в примере является простой формой для ясности. Фактически используемая область является сложной и асимметричной формой.
EDIT:
Похоже, я должен быть более конкретным. Это фрагмент, который является частью пользовательского шаблона элемента управления для ProgressBar. При масштабировании внешней сетки прямоугольник PART_Indicator не масштабирует область отсечения. Правильный состав - когда сетка имеет размер 200x200.
<Grid>
<Path Name="PART_Track"
Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
Fill="AliceBlue" Stretch="Fill"/>
<Rectangle Clip="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
Stretch="Fill"
Name="PART_Indicator" Fill="Red"
Height="100" VerticalAlignment="Top"/>
<Path Name="Border" Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
Stretch="Fill" StrokeThickness="3" Stroke="Black"/>
</Grid>
UPDATE:
Рик предложил отличное предложение, хотя мне потребовалось время, чтобы понять, как его использовать.
Вот окончательный код.
<Viewbox StretchDirection="Both" Stretch="Fill" >
<Grid>
<Path Name="PART_Track"
Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
Fill="AliceBlue" Stretch="Fill"/>
<Border Clip="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
Height="200" VerticalAlignment="Bottom">
<Rectangle Name="PART_Indicator" Fill="Red" VerticalAlignment="Bottom"
Height="40"/>
</Border>
<Path Name="Border"
Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
StrokeThickness="3"
Stretch="Fill" Stroke="Black"/>
</Grid>
</Viewbox>