Files
WPFToolkit/Src/Xceed.Wpf.Toolkit/PropertyGrid/Implementation/CategoryGroupStyleSelector.cs
2024-02-23 07:03:56 -05:00

66 lines
2.0 KiB
C#

/*************************************************************************************
Extended WPF Toolkit
Copyright (C) 2007-2013 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
***********************************************************************************/
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
namespace Xceed.Wpf.Toolkit.PropertyGrid
{
public class CategoryGroupStyleSelector : StyleSelector
{
public Style SingleDefaultCategoryItemGroupStyle
{
get;
set;
}
public Style ItemGroupStyle
{
get;
set;
}
public override Style SelectStyle( object item, DependencyObject container )
{
var group = item as CollectionViewGroup;
// Category is not "Misc" => use regular ItemGroupStyle
if( !group.Name.Equals( CategoryAttribute.Default.Category ) )
return this.ItemGroupStyle;
// Category is "Misc"
while( container != null )
{
container = VisualTreeHelper.GetParent( container );
if( container is ItemsControl )
break;
}
var itemsControl = container as ItemsControl;
if( itemsControl != null )
{
// Category is "Misc" and this is the only category => use SingleDefaultCategoryItemGroupContainerStyle
if( (itemsControl.Items.Count > 0) && (itemsControl.Items.Groups.Count == 1) )
return this.SingleDefaultCategoryItemGroupStyle;
}
// Category is "Misc" and this is NOT the only category => use regular ItemGroupStyle
return this.ItemGroupStyle;
}
}
}