我有一个在ViewModel中某个点定义的网格。
我想裁剪出此网格的某些区域,然后将其拉伸到屏幕的一部分,并在UI中显示为“叠加层”。要进行剪裁,我需要在网格上有某种坐标,但是如果设置其大小,它将拒绝拉伸。
ViewModel:
Grid newGridMask = new Grid
{
Width = 100.0,
Height = 100.0,
Background = Brushes.Black,
Opacity = 0.5
};
//Clipping
GridMask = newGridMask;
//Does nothing:
//GridMask.HorizontalAlignment = HorizontalAlignment.Stretch;
//GridMask.VerticalAlignment = VerticalAlignment.Stretch;
查看:
<Grid>
<Canvas Name="MouseSpace" Background="Blue"/>
<ContentControl Content="{Binding GridMask}"/>
//I tried this too:
//<ContentControl Content="{Binding GridMask}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
该矩形在蓝色背景上确实显示为一个较暗的矩形,但只有100 x 100像素。如果未设置宽度和高度,则矩形会拉伸,但是我没有坐标可使用。剪辑被注释掉了。
我只能在网格不需要宽度和高度的地方找到回答这个问题的帖子,但是如果有人可以指出答案或知道一些技巧,我将不胜感激。
谢谢。
答案 0 :(得分:0)
一位同事给我看了一个简单的解决方法:
在构造函数中侦听GridMask.SizeChanged
,然后从GridMask_SizeChanged
方法调用裁剪函数。这为我们提供了一个GridMask.ActualWidth
和GridMask.ActualHeight
一起使用的坐标系。