1

我有一个ListBoxwhich 当单击时向用户显示数据。如果用户输入无效数据并且他们单击列表中的另一个项目,我想阻止ListBoxItem他们单击的项目被选中。但是,当前事件在被选中ListBoxItem_Selected触发,所以我不知道如何阻止下一个列表框项目被选中。ListBoxItem

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

简单地执行

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

或者

this.ListBox.SelectedIndex = previousIndex;

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

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

4

1 回答 1

0

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

像这样的东西

public bool enabledOrNot { get; set; }

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

然后,当您对第一个输入进行验证时,您可以设置此布尔值,它将根据需要启用或禁用。

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

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx

于 2013-05-14T15:45:58.197 回答