ScaleTransform部分缩放ContextMenu

本文关键字:ContextMenu 缩放 ScaleTransform | 更新日期: 2023-09-27 18:16:15

我有一个应用程序,如果用户调整窗口大小,整个窗口都会缩放。下面是完成这个任务的代码:

 ContentDesktop.LayoutTransform = new ScaleTransform(scale, scale);

现在我需要一个带有ContextMenu的按钮,这个菜单应该像应用程序窗口一样缩放。为此,我将ContextMenu的RenderTransform绑定到Button的ScaleTransform:

  <Button.RenderTransform>
      <ScaleTransform ScaleX="{Binding ScaleFactor}" ScaleY="{Binding ScaleFactor}"/>
  </Button.RenderTransform>
  <Button.ContextMenu>
       <ContextMenu RenderTransform="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.RenderTransform}">
             <MenuItem Header="Item 1"/>
             <MenuItem Header="Item 2 wwww aaaa ssss iiii"/>
        </ContextMenu>
   </Button.ContextMenu>

菜单项的文本现在缩放,但对于更大的ScaleFactors(>1.2),只有一部分的上下文菜单显示。右边和底部都不见了。好像有人把它剪掉了。但是当我检查大小(宽度,高度)时,上下文菜单比绘制的要大。

有人知道这是什么吗?

ScaleTransform部分缩放ContextMenu

Try

<ContextMenu LayoutTransform="{Binding ...}">

LayoutTransform:在布局通过之前应用的转换。所以FrameworkElement得到在大方案中重新安排。

RenderTransform:在布局通过完成后应用的转换。ContextMenu生成一个新的Window,但它的边界仍然从转换之前,并切断视觉