我在一个带有其他组件的窗口上有一个ListBox。 当我更改这些其他组件的可见性时,ListBox使用新的selectedIndex = 0触发其SelectionChanged事件。这是非常不受欢迎的。 (如果插入断点,或者可能是睡眠,则不会发生这种情况。)
我想要一个可靠的事件,只在用户实际更改ListBox选择时触发,而不是在WPF仅更改窗口布局时触发。 这样的事情是存在的,或者对于更强大的东西,我应该使用按钮从头开始构建我自己的控件吗?
答案 0 :(得分:0)
更健壮的东西
如果您需要强大的应用程序,则需要强大的设计。
如果你正在使用WPF,你需要抛弃传统的基于事件的方法,理解并接受The WPF Mentality。
我想知道用户何时使用鼠标或键盘来更改 列表框选择
不是处理事件,而是放置一堆代码,并且希望 Visual Tree的复杂性将允许它工作,只需使用正确的DataBinding:
<ListBox ItemsSource="{Binding SomeCollection}"
SelectedItem="{Binding SelectedItem}"/>
到适当的ViewModel:
public class MyViewModel
{
public ObservableCollection<MyClass> SomeCollection {get;set;}
public MyClass SelectedItem {get;set;} //Don't forget INotifyPropertyChanged
}