I have a listbox that, when an item is selected, invokes a method that executes a Stored Procedure.
The problem is that when the first item is selected, my PropertyChanged event doesn't fire unless the selection is changed from one item to another . 因此,第二个项目 SelectedItem PropertyChanged 被触发,但看起来选择第一个项目只是被视为进入列表框,而不是进入列表框并选择发生单击的项目。
此外,我不能只在同一个项目上单击两次来触发通知,我必须实际选择不同的属性才能发生事件。
什么是让我在进入列表框时第一次单击的项目成为 SelectedItem 的最佳方式,并在该项目上触发 PropertySelected/Property Changed 事件?我希望这很清楚。
以下是我的代码,在此先感谢!
在我的视图模型中:
public ObjectClass SelectedObject
{
get { return _SelectedObject; }
set
{
_SelectedObject = value;
base.OnPropertyChanged("SelectedObject");
}
}
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "SelectedObject" : UpdateSelectedStuffList.StoredProcedureMethod(this);
}
}
在我看来:
<ListBox ItemsSource="{Binding Path=ObjectCollection, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="objectName"
SelectedItem="{Binding Path=SelectedObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
我在想,与其使用 PropertyChangedEventArgs,不如使用“PropertySelectedEventArgs”之类的东西。或者,也许我需要实现 INotifyPropertyChanging?