0

的文本菜单(以下this小教程)伟大的工作,直到我才能有Silverlight应用程序的规模,以适应整个浏览器窗口中实现的 <RenderTransform>标签在我的XAMLSilverlight 4的文本菜单,并通过Silverlight 4的工具包提供ScaleTransform

当所有伟大的工作,本教程之前,我的XAML看起来像:

<UserControl> 
    <Grid> 
     <!-- Rest of app here... --> 
    </Grid> 
</UserControl> 

现在,我的应用程序是这样的:

<UserControl> 
    <Canvas> 
     <Canvas.RenderTransform> 
      <ScaleTransform [vars]></ScaleTransform> 
     </Canvas.RenderTransform> 
     <Grid> 
      <!-- Rest of app here... --> 
     </Grid> 
    </Canvas> 
</UserControl> 

缩放工作完美,但现在当我右键单击时,ContextMenu不会出现在它应该(在鼠标下)的位置。相反,它出现在与鼠标相同的x位置,但它显示在应用程序的最顶端。这也是非常麻烦的,我必须不断点击才能让它消失,我不能右键点击其他地方再次启动它,并且它不会随着应用程序的其他部分一起扩展。

什么可能导致这种情况?有没有一种正确的方法去解决这个问题,或者我应该在菜单上应用一个偏移量来将它移动到鼠标上?

回答

1

您将需要通过光标坐标通过缩放转换的反转来将屏幕点转换为您的应用程序理解的点。

+0

我不知道我明白。像这样? http://pastebin.com/EisCLd5B – Jesse 2011-04-25 23:01:10

+0

@Jesse - 我还没有检查你的代码,但如果你的比例变换是'x * 2'和'y * 3'我想你需要缩放鼠标坐标由'x/2'和'y/3'。 – ChrisF 2011-04-26 12:16:27

相关问题