void updateSelection(AccordeonItem ai)
        {
            if (ai.IsSelected)
            {
                ai.IsSelected = false;
                SelectedItem = null;
            }
            else
            {
                if (SelectedItem != null)
                {
                    AccordeonItem selectedContainer;

                    if (IsItemItsOwnContainerOverride(SelectedItem))
                    {
                        selectedContainer = SelectedItem as AccordeonItem;
                    }
                    else
                    {
                        selectedContainer = ItemContainerGenerator.ContainerFromItem(SelectedItem) as AccordeonItem;
                    }

                    selectedContainer.IsSelected = false;
                    SelectedItem = null;
                }

                ai.IsSelected = true;

                if (IsItemItsOwnContainerOverride(ai))
                {
                    SelectedItem = ai;
                }
                else
                {
                    SelectedItem = ai.DataContext;
                }
            }
        }
        void container_HeaderClicked(object sender, AccordeonItem.HeaderClickedEventArgs e)
        {
            AccordeonItem item = sender as AccordeonItem;

            updateSelection(item);
        }