File: MS\Internal\Controls\IGeneratorHost.cs
Web Access
Project: src\src\Microsoft.DotNet.Wpf\src\PresentationFramework\PresentationFramework.csproj (PresentationFramework)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
//
// Description: IGeneratorHost interface
//
// Specs:       Data Styling.mht
//
 
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
 
namespace MS.Internal.Controls
{
    /// <summary>
    ///     Interface through which an ItemContainerGenerator
    ///     communicates with its host.
    /// </summary>
    internal interface IGeneratorHost
    {
        /// <summary>
        /// The view of the data
        /// </summary>
        ItemCollection View { get; }
 
        /// <summary>
        /// Return true if the item is (or should be) its own item container
        /// </summary>
        bool IsItemItsOwnContainer(object item);
 
        /// <summary>
        /// Return the element used to display the given item
        /// </summary>
        DependencyObject GetContainerForItem(object item);
 
        /// <summary>
        /// Prepare the element to act as the ItemUI for the corresponding item.
        /// </summary>
        void PrepareItemContainer(DependencyObject container, object item);
 
        /// <summary>
        /// Undo any initialization done on the element during GetContainerForItem and PrepareItemContainer
        /// </summary>
        void ClearContainerForItem(DependencyObject container, object item);
 
        /// <summary>
        /// Determine if the given element was generated for this host as an ItemUI.
        /// </summary>
        bool IsHostForItemContainer(DependencyObject container);
 
        /// <summary>
        /// Return the GroupStyle (if any) to use for the given group at the given level.
        /// </summary>
        GroupStyle GetGroupStyle(CollectionViewGroup group, int level);
 
        /// <summary>
        /// Communicates to the host that the generator is using grouping.
        /// </summary>
        void SetIsGrouping(bool isGrouping);
 
        /// <summary>
        /// The AlternationCount
        /// <summary>
        int AlternationCount { get; }
    }
}