/// <summary>
        /// Associates an item container with the specified item.
        /// </summary>
        /// <param name="container">The item container.</param>
        /// <param name="item">The contained item.</param>
        internal void AssociateContainerWithItem(DependencyObject container, Object item)
        {
            Contract.Require(container, nameof(container));

            if (item == null)
            {
                container.ClearLocalValue(AssociatedItemProperty);
            }
            else
            {
                container.SetLocalValue(AssociatedItemProperty, item);
            }
        }
        /// <summary>
        /// Associates an item container with the specified item.
        /// </summary>
        /// <param name="container">The item container.</param>
        /// <param name="item">The contained item.</param>
        internal void AssociateContainerWithItem(DependencyObject container, Object item)
        {
            Contract.Require(container, "container");

            if (item == null)
            {
                container.ClearLocalValue(AssociatedItemProperty);
            }
            else
            {
                container.SetLocalValue(AssociatedItemProperty, item);
            }
        }