我将 Silverlight 与 MVVM 一起使用(使用 Caliburn.Micro)。我在视图中创建了一个简单的矩形,如下所示:
<Rectangle x:Name="Rectangle2" cal:Message.Attach="[Event MouseMove] = [Action MouseMoved($eventArgs)]" Fill="#FFE2F5FF" HorizontalAlignment="Left" Height="220" Margin="195,43,0,0" Stroke="Black" VerticalAlignment="Top" Width="195" />
在 ViewModel 我有:
public void MouseMoved(MouseEventArgs mouseEventArgs)
{
var point = mouseEventArgs.GetPosition(null);
String str = string.Format("({0}\t{1})",point.X,point.Y);
MVVMCoords = str;
}
出现的坐标是绝对的,因为我在 GetPosition 中输入了 null。如何使它们相对于矩形?(所以矩形的左上角是 0,0)据我了解,这可以在 ViewModel 不知道 View 中的 UIElements 的情况下完成。
谢了,兄弟们