【问题标题】:ContextMenu won't go away after selection.选择后 ContextMenu 不会消失。
【发布时间】:2013-05-01 15:49:33
【问题描述】:

我有以下代码将上下文菜单添加到 UI 上的文本框。用户应该能够调出上下文菜单并选择要使用的新单位。因此,我的视图模型中的 CurrentUnits 方法绑定到了文本框。我想要一个由所有潜在单位填充的上下文菜单。所以我的视图模型中的方法 Units 返回一个单位选项的字符串 [];例如英寸、厘米、英尺、米等。当用户选择其中一项时,将调用 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>

【问题讨论】:

  • 你试过使用 Tap-event 吗?
  • 我没有看到可用的点击事件?
  • 你用的是什么版本?该事件应该可用。

标签: c# windows-phone-7 xaml contextmenu


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2019-03-05
    相关资源
    最近更新 更多