我的窗口中有两个ListBox
:LstStoreItems
和LstPlayerItems
。看起来像这样:
这里的想法是,当您从商店中选择一个项目时,Sell
按钮被禁用,并且UnselectAll
在播放器清单上,并且用老虎钳固定。这是代码:
private void LstPlayerItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
LstStoreItems.UnselectAll();
BtnBuy.IsEnabled = false;
BtnSell.IsEnabled = true;
}
private void LstStoreItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
LstPlayerItems.UnselectAll();
BtnBuy.IsEnabled = true;
BtnSell.IsEnabled = false;
}
但是,现在,如果我在播放器库存中选择一个项目,然后去商店库存中选择一个项目,它将执行代码,但实际上并没有选择我单击的项目。更改焦点列表框时如何获取它以选择项目?
答案 0 :(得分:1)
我相信发生的是,当您执行UnSelectAll时,另一个ListBox的SelectionChanged
事件被触发,这会导致新选择的项被取消选择。在取消选择另一个ListBox中的项目之前,请尝试检查以确保在ListBox中具有选定的项目。
像这样:
private void LstPlayerItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (((ListBox)sender).SelectedIndex != -1)
LstStoreItems.UnselectAll();
BtnBuy.IsEnabled = false;
BtnSell.IsEnabled = true;
}
private void LstStoreItems_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (((ListBox)sender).SelectedIndex != -1)
LstPlayerItems.UnselectAll();
BtnBuy.IsEnabled = true;
BtnSell.IsEnabled = false;
}