3

ラジアル スタイル (各項目の「パイ スライス」) を使用して、タッチ アプリケーション用の完全にカスタムのコンテキスト メニューを作成しようとしています。ItemsControl をベースに作成できました。ただし、これを ContextMenu のベースに切り替えようとすると、アイテムのリスト内の各パイ スライスでデフォルトのポップアップを取り除くことができません。

この項目リスト機能を取り除くために、デフォルトの ContextMenu スタイルをオーバーライドする方法はありますか?

編集:これは私の問題のスクリーンショットです。2 つの例のコードは、継承元のクラスと表示方法 (Canvas に子として追加するか、ポップアップを表示するか) 以外はほぼ同じです。

上: ItemsControl から継承したカスタム コンテキスト メニュー。 下: ContextMenu から継承した同じコンテキスト メニュー

編集2:以下のようにデフォルトのスタイルをオーバーライドしようとしました:

<ContextMenu.Style>
  <Style TargetType="ContextMenu">
    <Setter Property="OverridesDefaultStyle" Value="true" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ContextMenu">
          <Canvas IsItemsHost="true" Height="100" Width="100" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ContextMenu.Style>

デフォルト スタイルをオーバーライドするときのコンテキスト メニュー。

4

2 に答える 2

2

WPF コントロールの外観だけを変更したい場合は、そのコントロール テンプレートを変更するだけです。

ContextMenu のデフォルトは次のとおりです。 http://msdn.microsoft.com/en-us/library/ms744758.aspx

また、MenuItem コントロール テンプレートも更新することを忘れないでください: http://msdn.microsoft.com/en-us/library/ms747082(v=vs.85).aspx

于 2012-12-07T14:30:14.657 に答える
0

私は個人的に、デフォルトのコンテキストメニューレイアウトをオーバーライドまたは変更する方法を知りません。適切な方法がないように思われる場合は、Adorner クラスを使用して最初から作成するか、新しい透明な tomost ウィンドウを作成する必要があると思います。選択するソリューションをお知らせください。

よろしく

于 2012-12-07T14:23:51.137 に答える