private void ChildItem_Clicked(object item, MouseButtonEventArgs e) { if (Command != null) { ListBoxItem clickedItem = e.OriginalSource as ListBoxItem; if (clickedItem == null) { FrameworkElement clickedFE = e.OriginalSource as FrameworkElement; if (clickedFE != null) { if (ItemsControlHelper.GetDataItemContainer(clickedFE) != null) { ExecuteCommand(ItemsControlHelper.GetDataItemContainer(clickedFE) as ListBoxItem); return; } clickedFE.SetBinding(ItemsControlHelper.DataItemContainerProperty, new Binding { RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(ListBoxItem), 1) }); SetBinding(ClickedListBoxItemProperty, new Binding { Source = clickedFE, Path = new PropertyPath(ItemsControlHelper.DataItemContainerProperty) }); } } else { ExecuteCommand(e.OriginalSource as ListBoxItem); } } }