c# - 选择后 ContextMenu 不会消失。

标签 c# windows-phone-7 xaml contextmenu

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

最佳答案

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

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

关于c# - 选择后 ContextMenu 不会消失。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16321537/

相关文章:

c# - 访问 Z3 中 `exists` 范围的变量

javascript - Windows Phone 7 不显示脚本或图像

windows-phone-7 - 使用 C# 循环遍历屏幕上给定标签 WP7 的所有按钮

windows-phone-7 - 如何从另一个 xaml- 文件获取 WP7 全景内容?

c# - 如何创建 WPF 验证规则以确保两个文本字段具有相同的值?

c# - 如何使用 AND 检查 C# 中是否存在某个位?

c# - 我可以更新 Parallel.For 正在使用的集合吗?

wpf - Color 和 SolidColorBrush 的区别澄清

c# - 如何使用 MVVM 在 WPF 的主窗口中显示用户控件

c# - 如何使用 Azure Iot 获取设备的当前位置