private bool SaveQatControlData( VM.QatItemCollection remainingItems, VM.ControlData controlData) { bool matched = false; for (int qatIndex = 0; qatIndex < remainingItems.Count; qatIndex++) { VM.QatItem qatItem = remainingItems[qatIndex]; if (qatItem.Instance == controlData) { if (qatItem.IsSplitHeader) { // This is the case of the Header of a SplitButton // or a SplitMenuItem added to the QAT. Note -1 is // the sentinel being used to indicate this case. qatItem.ControlIndices.Add(-1); } remainingItems.Remove(qatItem); qatIndex--; matched = true; } } VM.MenuButtonData menuButtonData = controlData as VM.MenuButtonData; if (menuButtonData != null) { for (int controlIndex = 0; controlIndex < menuButtonData.ControlDataCollection.Count && remainingItems.Count > 0; controlIndex++) { controlData = menuButtonData.ControlDataCollection[controlIndex]; for (int qatIndex = 0; qatIndex < remainingItems.Count; qatIndex++) { VM.QatItem qatItem = remainingItems[qatIndex]; qatItem.ControlIndices.Add(controlIndex); } matched = SaveQatControlData(remainingItems, controlData); if (!matched) { for (int qatIndex = 0; qatIndex < remainingItems.Count; qatIndex++) { VM.QatItem qatItem = remainingItems[qatIndex]; qatItem.ControlIndices.RemoveAt(qatItem.ControlIndices.Count - 1); } } } } return matched; }