ScaleTransform部分缩放ContextMenu

时间:2016-11-03 16:54:02

标签: c# wpf

我有一个应用程序,如果用户调整窗口大小,整个窗口都会缩放。这是执行此操作的代码:

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

现在我需要一个带有ContextMenu的Button,这个菜单应该像应用程序窗口一样缩放。为此,我将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>

MenuItems的文本现在正在缩放,但对于更大的ScaleFactors(> 1.2),只显示了ContextMenu的一部分。缺少右侧和底部。好像有人切了它。 但是当我检查尺寸(宽度,高度)时,ContextMenu的颜色会更大。

有人知道这可能是什么?

1 个答案:

答案 0 :(得分:2)

尝试

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

LayoutTransform :在布局传递之前应用的变换。所以FrameworkElement得到了 在更大的计划中重新安排。

RenderTransform :在布局传递完成后应用的变换。 ContextMenu会产生一个新的Window,但它的边界仍然保留在变换之前并切断视觉效果。