C# 如果与上一个ListBoxItem相关的数据不正确,如何停止选择ListBoxItem?

C# 如果与上一个ListBoxItem相关的数据不正确,如何停止选择ListBoxItem?,c#,wpf,listbox,C#,Wpf,Listbox,我有一个列表框,单击该列表框可向用户显示数据。如果用户输入无效数据并单击列表中的另一项,我希望阻止选中他们单击的ListBoxItem。但是,当前在选择ListBoxItem之后,会触发ListBoxItem\u Selected事件,因此我不知道如何停止选择下一个列表框项 在ListBoxItem_Selected事件中,我正在验证数据,但此时为时已晚 简单执行 ((ListBoxItem)this.ListBox.Items[previousIndex]).IsSelected = true

我有一个
列表框
,单击该列表框可向用户显示数据。如果用户输入无效数据并单击列表中的另一项,我希望阻止选中他们单击的
ListBoxItem
。但是,当前在选择
ListBoxItem
之后,会触发
ListBoxItem\u Selected
事件,因此我不知道如何停止选择下一个列表框项

ListBoxItem_Selected
事件中,我正在验证数据,但此时为时已晚

简单执行

((ListBoxItem)this.ListBox.Items[previousIndex]).IsSelected = true;

不起作用,即仍选择下一个列表项


如果输入的数据无效,如何防止选择下一项?

因此,最好的方法是将启用的列表框绑定到代码中的bool

像这样的

public bool enabledOrNot { get; set; }

<Listbox isEnabled={Binding enabledOrNot}>...
public bool enabledOrNot{get;set;}
...
然后,当您对第一次输入进行验证时,您可以设置此bool,它将根据需要启用或禁用

另一种方法是使用ValidationRules。我知道我们在工作中使用这些代码,但我很难理解它们。我所知道的是,在其他任何事情发生之前,他们以某种方式进行了验证。这是一个内置的.NET功能

看起来像是你在寻找的东西(如果某些必要的逻辑不成功,可以恢复选择更改),只需将TabControl从文章切换到ListBox即可
public bool enabledOrNot { get; set; }

<Listbox isEnabled={Binding enabledOrNot}>...