【发布时间】: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