由于 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 事件。在这种情况下,您可能希望在代码中将 RectangleGeometry 分配给 Clip
属性,而不是依赖它在默认模板的 Xaml 中分配。
关于silverlight - 如何在 Silverlight 中创建拉伸(stretch)裁剪矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679264/