【发布时间】:2011-08-06 11:04:14
【问题描述】:
由于 Silverlight 在控件上没有“ClipToBounds”属性的舒适功能,我必须自己定义剪切形状。我想知道是否可以创建一个符合控件大小的剪切矩形。有什么建议吗?
【问题讨论】:
标签: silverlight clipping
由于 Silverlight 在控件上没有“ClipToBounds”属性的舒适功能,我必须自己定义剪切形状。我想知道是否可以创建一个符合控件大小的剪切矩形。有什么建议吗?
【问题讨论】:
标签: silverlight clipping
如果您想要动态剪辑布局中的现有控件,请使用其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 支持: 尝试使用 HorisontalAlignment 和垂直对齐属性。将它们设置为拉伸。 如果这不起作用,那么您将不得不发布 xaml 示例。
【讨论】:
ClipToBounds 的实际作用感到很困惑。它的功能是关于裁剪而不是调整大小或对齐。对齐属性与问题完全无关。