Если в макете есть существующий элемент управления, который вы хотите динамически обрезать, используйте событие SizeChanged
.Например, допустим, вы хотите обрезать эту сетку: -
<Grid SizeChanged="Grid_SizeChanged" Width="50" Height="20">
<Grid.Clip>
<RectangleGeometry />
</Grid.Clip>
<TextBlock Margin="0 -9 0 0" Text="This text should not be legible" />
</Grid>
С выделенным кодом: -
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
((RectangleGeometry)((Grid)sender).Clip).Rect = new Rect(0.0, 0.0, e.NewSize.Width, e.NewSize.Height);
}
Для вашего собственного пользовательского элемента управления вы можете рассмотреть обработку прямоугольника обрезкив ArrangeOverride
вместо того, чтобы полагаться на событие SizeChanged.В этом случае вы, вероятно, захотите присвоить RectangleGeometry свойству Clip
в коде, а не полагаться на его назначение в Xaml шаблона по умолчанию.