我有一个包含扩展器的用户控件。解释器的内容是绑定到对象的ListBox,DataTemplate正确显示它。问题是:用户可以选择一个Listbox项,SelectionChanged处理程序将ListBox的DataContext更改为所选对象。
像这样:
<ListBox
Name="RelativesLB" ItemsSource="{Binding Relatives}",
ItemsTemplate ="{...}",
Selectionchanged="Relatives_OnSelectionChanged" />
和
Relatives_OnSelectionChanged(object sender, ...EventArgs e)
{
var who = (sender as ListBox).SelectedItem as Person;
if (who == null)
return;
People.DataContext = who;
问题在于:
SelectionChanged
事件触发。DataContext
已更改,ListBox
重新填充。SelectionChanged
事件触发SelectedItem = null
。在这里,我的代码不会更改DataContext
;它只是回归。SelectionChanged
事件再次以SelectedItem = <whatever is first>
触发。在这里,我的代码再次将DataContext
更改为该项我不想要这一点。实际上,我想在2之后停止。 Datacontext
已更改为<whatever is first>
...
依此类推,直到我们得到一个空Person.Relatives
,然后我们停止。
我想要的是在第一次DataContext
更改后停止。您从person
集合中选择Relatives
,然后获取该人的观看次数。
如何停止随后的SelectionChanged
事件触发?
答案 0 :(得分:0)
我想,你在Relatives_OnSelectionChanged
上需要设置
e.Handled = True;