2013-05-01 151 views
3

我有以下代码将上下文菜单添加到UI上的文本框。用户应该能够调出上下文菜单并选择要使用的新单元。因此,我的视图模型中的CurrentUnits方法绑定到文本框。我想要一个由所有潜在单位填充的上下文菜单。因此,我的视图模型中的单位方法返回单位选项的字符串[];如英寸,厘米,英尺,米等。当用户选择一个方法NewUnits_Click被调用。所有的工作都很好,但是当用户选择一个菜单选项时,contextmenu不会消失。然后像应用程序菜单栏一样按屏幕上的其他位置将清除它。有没有其他人看到这个问题,或者看到下面的代码有问题。这似乎与我的ItemTemplate/DataTemplate有关,因为手工创建一组菜单项可以很好地工作。选择后ContextMenu不会消失。

<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

您是否尝试过使用Tap事件? – Kenneth 2013-05-01 15:55:45

+0

我没有看到Tap事件可用? – user2339952 2013-05-01 17:44:24

+0

你使用的是什么版本?此事件应该可用。 – Kenneth 2013-05-01 18:07:29

回答

0

如果您在使用WPF时没有使用MVVM,我强烈建议您开始这样做。即使你不是,我建议,而不是绑定到点击你,而是绑定在Command属性,它需要一些实现ICommand。我认为你正在获得的行为是有意的,WPF中的按钮和菜单项旨在绑定到Commands,它不仅仅是WinForms 2.0。

另一种解决方案是隐藏代码隐藏上下文菜单。也许this resource将帮助你实现这一目标。

相关问题