Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Client/DataGridTransform/ExtendedGrid/Classes/ColumnInformation.cs

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;
}
}