1

我正在使用 PreviewMouseButton 事件来验证是否可以选择项目,因为我希望验证仅在用户手动选择而不是自动选择时发生。

作为验证的一部分,我显示 MessageBox 以确认用户是否真的想要更改选择。一旦用户说“是”,我应该让选择发生,否则,选择不应该发生。

问题是,即使在我选择“是”之后,在 MessageBox 确认中,它也不让我选择项目。

你能告诉我我错过了什么吗?

    private void ListBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if(!ParentViewModel.CanChangeList())
        {
            e.Handled = true;
        }
    }


    public bool CanChangeTree()
    {
        if (someCondition)
        {
            MessageBoxResult objResult = MessageBox.Show("Are You sure You want to change?", "Confirmation", MessageBoxButton.YesNo);
            if (objResult == MessageBoxResult.Yes)
            {
                return true;
            }else
            {
                return false;
            }
        }
        return true;
    }
4

1 回答 1

0

导致此问题的原因是显示消息框(尽管我不确定为什么会这样)。

如果要坚持消息框,则需要在显示消息之前检索正在单击的 ListBoxItem;然后,如果允许,请自行设置所选项目。

于 2013-02-10T17:08:50.167 回答