2016-11-03 3 views
2

私はアプリケーションを持っています。ユーザーがウィンドウのサイズを変更すると、ウィンドウ全体が拡大縮小されます。ScaleTransformは部分的にContextMenuをスケールします

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

私はContextMenuを持つButtonが必要でしたが、このメニューはアプリケーションウィンドウのように拡大縮小する必要があります。これを行うために、私はボタンのScaleTransformにされたContextMenuのRenderTransformをバインド:

<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> 

のMenuItemのテキストは今スケーリングされていますが、より大きなスケールファクタ(> 1.2)のためのContextMenuの一部のみが示されています。右と下部が欠けています。誰かがそれを切るかのように。 しかし、サイズ(幅、高さ)を確認すると、ContextMenuは塗りつぶされるほど大きくなります。

誰かがこれが何であるか考えましたか?

答えて

2

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

LayoutTransformをお試しください:Aそれはレイアウトパスの前に適用されます変換。したがって、FrameworkElementは、大きなスキームで を再配置します。

レンダリングトランス:レイアウトパスが完了した後に適用されるトランスフォーム。 ContextMenuは新しいWindowを生成しますが、境界線は変換前から残っており、ビジュアルがカットされます。

関連する問題