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),只有一部分的上下文菜单显示。右边和底部都不见了。好像有人把它剪掉了。但是当我检查大小(宽度,高度)时,上下文菜单比绘制的要大。
有人知道这是什么吗?
Try
<ContextMenu LayoutTransform="{Binding ...}">
LayoutTransform:在布局通过之前应用的转换。所以FrameworkElement
得到在大方案中重新安排。
RenderTransform:在布局通过完成后应用的转换。ContextMenu
生成一个新的Window
,但它的边界仍然从转换之前,并切断视觉