当另一个列表框的选择发生更改时,动态创建的列表框的所选项目将变为蓝色

时间:2009-12-23 22:31:41

标签: wpf listbox selecteditem

我有一个TabControl,其中包含两个TabItem和一个ListBox,这两个标签共有。此ListBox需要在特定于标签的内容中对齐。因此,我不会将它放在标签之外。我在其中一个标签上有另一个ListBox。当我在第二个ListBox中选择一个项目时,第一个ListBox的{​​{1}}变为蓝色,因此我会立即显示2个SelectedItem作为焦点控件。< / p>

此WPF错误是否有解决方法?这是截图和代码:

alt text http://img85.imageshack.us/img85/871/2focusedcontrols.png

ListBox

1 个答案:

答案 0 :(得分:1)

问题是,当您单击共享列表框时,您的选项卡控件所选事件将会触发,这会引入在另一个选项卡中具有焦点的列表框的实例。它实际上不是一个错误。这正是你告诉它要做的事情。

将事件处理程序中的代码更改为:

if (e.Source is TabControl)
{
   var parent = listBox.Parent as Panel;
   parent.Children.Remove(listBox);
   var panel = tabControl.SelectedIndex == 0 ? panel1 : panel2;
   panel.Children.Add(listBox);
}

这将阻止你所看到的不受欢迎的焦点行为。