using System.Collections.Generic; using System.Windows; namespace OpenSEMI.ClientBase.Command { public sealed class CommandTriggerGroup : FreezableCollection, ICommandTrigger { private readonly HashSet _initList = new HashSet(); void ICommandTrigger.Initialize(FrameworkElement source) { using (Enumerator enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { ICommandTrigger current = enumerator.Current; if (!_initList.Contains(current)) { InitializeCommandSource(source, current); } } } } private void InitializeCommandSource(FrameworkElement source, ICommandTrigger child) { child.Initialize(source); _initList.Add(child); } } }