带有ControlTemplate的ContextMenu中的Caliburn Micro Action

本文关键字:Caliburn Micro Action 中的 ContextMenu ControlTemplate 带有 | 更新日期: 2023-09-27 18:26:07

我在ControlTemplate中有一个带有ContextMenu的自定义组件。我读过几篇关于人们在ContextMenu中难以执行操作的帖子。我已经尝试了张贴在那里的变通方法,但我无法让它发挥作用。我一直得到No target found for method Open.,但是这些解决方案都没有使用ControlTemplate。我曾尝试将模型绑定到上下文菜单、菜单项,以使用TargetWithoutContext属性,但似乎都不起作用。

 <components2:ImageBlock Background="Transparent" x:Name="ShareButton" Margin="0,0,7,0" >
     <components2:ImageBlock.Style>
          <Style TargetType="{x:Type components2:ImageBlock }">
               <Setter Property="ToolTipService.IsEnabled" Value="False"/>
               <Setter Property="Cursor" Value="Hand"/>
               <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
               <Setter Property="Template">
                    <Setter.Value>
                         <ControlTemplate TargetType="{x:Type components2:ImageBlock }">
                                <Grid x:Name="ContentGrid" Background="{TemplateBinding Background}" MinHeight="30" ToolTip="{TemplateBinding ToolTip}">
                                      <Grid.ContextMenu>
                                            <ContextMenu>
                                                 <MenuItem Header="Facebook" cal:Message.Attach="Open(0)"/>
                                                 <MenuItem Header="Twitter"  cal:Message.Attach="Open(1)]" />
                                                 <MenuItem Header="Tumblr" cal:Message.Attach="Open(2)]" />
                                             </ContextMenu>
                                       </Grid.ContextMenu>
                                </Grid>
                         </ControlTemplate>
                     </Setter.Value>
                </Setter>
           </Style>
      </components2:ImageBlock.Style>
  </components2:ImageBlock>

如何让Open在视图后面的视图模型中工作?

带有ControlTemplate的ContextMenu中的Caliburn Micro Action

通过添加到ImageBlockDependencyObject使其工作,其中我必须将ContextMenuPlacementTarget设置为ImageBlock。奇怪的是,直接将ContextMenu{Binding ...}PlacementTarget设置为ImageBlock不起作用。