Silverlight没有控件上“ClipToBounds”属性的优势,因此我必须自己定义剪切形状。我想知道是否可以创建一个跟随我的控件大小的剪切矩形。有什么建议吗?
Silverlight没有控件上“ClipToBounds”属性的优势,因此我必须自己定义剪切形状。我想知道是否可以创建一个跟随我的控件大小的剪切矩形。有什么建议吗?
如果您的布局中有一个现有的控件需动态剪切,则应使用其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
事件。在这种情况下,您可能需要在代码中将Clip
属性分配给RectangleGeometry,而不是依赖于默认模板的Xaml中分配它。
ClipToBounds
属性的实际作用感到相当困惑。它的功能是关于裁剪而不是大小或对齐。对齐属性与此问题完全无关。 - AnthonyWJones