# C1.WPF.FlexGrid.C1FlexGrid.GroupHeaderConverter

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter_" data-uid="C1.WPF.FlexGrid.C1FlexGrid.GroupHeaderConverter*">GroupHeaderConverter Property
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter_" data-uid="C1.WPF.FlexGrid.C1FlexGrid.GroupHeaderConverter*"></a>
<h4 id="C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter" data-uid="C1.WPF.FlexGrid.C1FlexGrid.GroupHeaderConverter">GroupHeaderConverter</h4>
<div class="markdown level1 summary"><p>Gets or sets the <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.windows.data.ivalueconverter">IValueConverter</a> used to create the content shown
in <a class="xref" href="C1.WPF.FlexGrid.GroupRow.html">GroupRow</a> cells to summarize group information.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public IValueConverter GroupHeaderConverter { get; set; }</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Property GroupHeaderConverter As IValueConverter</code></pre>
</div>
<h5 id="C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter_remarks">Remarks</h5>
<div class="markdown level1 remarks"><pre><code>&lt;p&gt;By default, the grid creates group headers that show the name of the property being
</code></pre>
<p>grouped on, the value of the property, and the number of items in the group.</p>
<p>You can modify or customize this information by defining your own group header
converter class and assigning an instance of this class to the grid's
<a class="xref" href="C1.WPF.FlexGrid.C1FlexGrid.GroupHeaderConverter.html#C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter">GroupHeaderConverter</a> property.</p>
</div>
<h5 id="C1_WPF_FlexGrid_C1FlexGrid_GroupHeaderConverter_examples">Examples</h5>
<p>The example below shows the default group header converter class implementation.</p>
<pre><code class="lang-csharp">class GroupHeaderConverter : IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  {
    var gr = parameter as GroupRow;
    var group = gr.Group;
    if (group != null &amp;&amp; gr != null &amp;&amp; targetType == typeof(string))
    {
      var desc = gr.Grid.CollectionView.GroupDescriptions[gr.Level] as PropertyGroupDescription;
      return desc != null
        ? string.Format("{0}: {1} ({2:n0} item{3})", 
            desc.PropertyName, 
            group.Name, 
            group.ItemCount, 
            group.ItemCount == 1 ? string.Empty : "s")
        : string.Format("{0} ({1:n0} items)", group.Name, group.ItemCount);
    }

    // default
    return value;
  }
  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  {
    return value;
  }
}</code></pre>

</div>
