3

我有以下代码将上下文菜单添加到 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>
4

1 回答 1

0

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

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

于 2013-07-01T10:29:12.013 回答