【问题标题】:Caliburn Micro Action in ContextMenu with ControlTemplate带有 ControlTemplate 的 ContextMenu 中的 Caliburn 微操作
【发布时间】:2014-10-10 12:00:29
【问题描述】:

我在 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 在视图后面的视图模型上工作?

【问题讨论】:

    标签: c# wpf mvvm binding caliburn.micro


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多