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

相關問題