使用wpf和calibre时,上下文菜单将不可见



点击按钮时上下文菜单不保持打开状态。我使用wpf和caliburn micro来实现这一点。上下文菜单出现,然后立即消失。

xaml

<Button.ContextMenu>
<ContextMenu x:Name="MainContextMenu" StaysOpen="true" PlacementRectangle="{Binding RelativeSource={RelativeSource Self}}">
<MenuItem Header="Find" />
<MenuItem Header="Add" />
<MenuItem Header="View" />
<MenuItem Header="Edit" />
</ContextMenu>
</Button.ContextMenu>
<Image Source="/Images/TrayCogIcon.png">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<cal:ActionMessage MethodName="CogButtonClick">
<cal:Parameter Value="{Binding ElementName=cogButton}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</Button>

视图模型

public void CogButtonClick(object sender) 
{
var addbutton = sender as System.Windows.Controls.Button;
if (addbutton != null)
{
addbutton.ContextMenu.IsOpen = true;
}
}

我尝试在xaml和视图模型中设置staysOpen为true,但没有运气。我对wpf和calibry比较陌生,所以任何见解都会有所帮助!谢谢。

您可以尝试使用ToggleButton来解决这个问题。你需要给IsChecked&quot添加绑定ToggleButton属性:

IsChecked="{Binding ElementName=MainContextMenu, Path=IsOpen}"

附加信息,右键单击按钮,按钮的上下文菜单将显示。

完整样本:

<ToggleButton Name="toggleMenu"
Width="50" Height="20"
IsChecked="{Binding ElementName=MainContextMenu, Path=IsOpen}">
<ToggleButton.ContextMenu>
<ContextMenu x:Name="MainContextMenu" 
PlacementRectangle="{Binding RelativeSource={RelativeSource Self}}">
<MenuItem Header="Find" />
<MenuItem Header="Add" />
<MenuItem Header="View" />
<MenuItem Header="Edit" />
</ContextMenu>
</ToggleButton.ContextMenu>
</ToggleButton>

最新更新