我有以下代码将上下文菜单添加到UI上的文本框中。用户应该能够调出上下文菜单并选择要使用的新单元。所以我的视图模型中的方法CurrentUnits绑定到文本框。我想要一个由所有潜在单位填充的上下文菜单。所以我视图模型中的单位方法返回一个单位选项的字符串[];例如英寸,厘米,英尺,米等。当用户选择一个方法时,调用NewUnits_Click方法。一切正常,但是当用户选择菜单选项时,上下文菜单不会消失。按下屏幕上的其他位置(如应用程序菜单栏)将清除它。有没有其他人看到这个问题,或看到下面的代码有问题。它似乎与我所拥有的ItemTemplate / DataTemplate有关,因为手工创建一组菜单项工作正常。
<TextBlock Width="100" Text="{Binding CurrentUnits}" TextAlignment="Right">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu ItemsSource="{Binding Units}">
<toolkit:ContextMenu.ItemTemplate>
<DataTemplate>
<toolkit:MenuItem Header="{Binding}" Click="NewUnits_Click" />
</DataTemplate>
</toolkit:ContextMenu.ItemTemplate>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</TextBlock>
答案 0 :(得分:0)
如果您在使用WPF时没有使用MVVM,我强烈建议您开始这样做。即使你不是,我建议不要绑定到Click而是绑定在Command属性上,它需要实现ICommand的东西。我认为你想要的行为,WPF中的按钮和菜单项旨在绑定到命令,它不仅仅是WinForms 2.0。
另一个解决方案是隐藏代码隐藏中的Context菜单。也许this resource会帮助你实现这一目标。