0
私はContextMenu
を持っています。私はカスタムオブジェクトのコレクションにサブメニューをバインドしています。クリックで私は、パラメータとしてバインドされたオブジェクトにコマンドを送信しています:MenuItemのクリック可能なエリア
<ContextMenu>
<MenuItem Header="Launch" ItemsSource="{Binding Profiles}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Command="{Binding DataContext.LaunchProfileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ContextMenu}}}"
CommandParameter="{Binding}">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<local:ProfileView IconSize="24" NameFontSize="10"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</MenuItem.Style>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Exit" Command="{Binding ExitCommand}"/>
</ContextMenu>
問題がMenuItem
(「プロファイル」コレクション内の各項目に1つ)のない全領域がバインドされたコマンドをトリガすることです。唯一の赤い部分は、コマンドをトリガします:
ノー成功しMenuItem
スタイルのPadding
とMargin
プロパティを変更しようとしています。
MenuItem
の任意の場所をクリックして、バインドされたコマンドを起動できるようにするにはどうすればよいですか?
注:赤い部分は私のカスタム表示に対応します:ProfileView
。このビューの余白は0に設定されています。
ハイライトは、のMenuItemに動作を停止しましたが、それは、テンプレートコントロール(Mahapps)を使用することによって引き起こされることができますか? – Sturm
@ Sturm右は、コントロールテンプレートがそれを処理し、コントロールテンプレートを置き換えました。代わりにHeaderTemplateを使用するように私のバージョンを更新しました。既存のコントロールテンプレートを完全に削除したいのであれば、新しいControlTemplateにいくつかのトリガーを付けてハイライトなどを処理する必要があります。 –
スタイルトリガーを追加することでこれを解決できました: ' 'そして、 'Background =" {TemplateBinding Background} "' ' –
Sturm