64 lines
2.3 KiB
C#
64 lines
2.3 KiB
C#
|
using System.ComponentModel;
|
|||
|
using System.Windows;
|
|||
|
using System.Windows.Controls;
|
|||
|
using System.Windows.Data;
|
|||
|
|
|||
|
namespace ExtendedGrid.Classes
|
|||
|
{
|
|||
|
public struct ColumnInformation
|
|||
|
{
|
|||
|
public ColumnInformation(DataGridColumn column)
|
|||
|
{
|
|||
|
Header = column.Header;
|
|||
|
if (!(column is DataGridTemplateColumn))
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (column is DataGridComboBoxColumn)
|
|||
|
PropertyPath = column.SortMemberPath;
|
|||
|
else
|
|||
|
PropertyPath = ((Binding)((DataGridBoundColumn)column).Binding).Path.Path;
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
PropertyPath = string.Empty;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PropertyPath = column.SortMemberPath;
|
|||
|
}
|
|||
|
WidthValue = column.Width.DisplayValue;
|
|||
|
WidthType = column.Width.UnitType;
|
|||
|
SortDirection = column.SortDirection;
|
|||
|
DisplayIndex = column.DisplayIndex;
|
|||
|
SortMemberPath = column.SortMemberPath;
|
|||
|
IsVisible = column.Visibility == Visibility.Visible;
|
|||
|
}
|
|||
|
public void Apply(DataGridColumn column, int gridColumnCount, SortDescriptionCollection sortDescriptions)
|
|||
|
{
|
|||
|
column.Width = new DataGridLength(WidthValue, WidthType);
|
|||
|
column.SortDirection = SortDirection;
|
|||
|
if (SortDirection != null)
|
|||
|
{
|
|||
|
sortDescriptions.Add(new SortDescription(PropertyPath, SortDirection.Value));
|
|||
|
}
|
|||
|
if (column.DisplayIndex != DisplayIndex)
|
|||
|
{
|
|||
|
var maxIndex = (gridColumnCount == 0) ? 0 : gridColumnCount - 1;
|
|||
|
column.DisplayIndex = (DisplayIndex <= maxIndex) ? DisplayIndex : maxIndex;
|
|||
|
}
|
|||
|
column.Visibility = IsVisible ? Visibility.Visible : Visibility.Collapsed;
|
|||
|
column.SortMemberPath = SortMemberPath;
|
|||
|
}
|
|||
|
public object Header;
|
|||
|
public string PropertyPath;
|
|||
|
public ListSortDirection? SortDirection;
|
|||
|
public int DisplayIndex;
|
|||
|
public double WidthValue;
|
|||
|
public DataGridLengthUnitType WidthType;
|
|||
|
public string SortMemberPath;
|
|||
|
public bool IsVisible;
|
|||
|
}
|
|||
|
}
|