Sic.Framework/MECF.Framework.UI.Client/DataGridTransform/DataGrid/Microsoft/Windows/Controls/DataGridColumnDropSeparator.cs

91 lines
2.5 KiB
C#
Raw Normal View History

2023-04-13 11:51:03 +08:00
//---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.Windows;
using System.Windows.Controls;
using EGC = ExtendedGrid.Microsoft.Windows.Controls;
using MS.Internal;
namespace ExtendedGrid.Microsoft.Windows.Controls
{
/// <summary>
/// The separator used to indicate drop location during column header drag-drop
/// </summary>
internal class DataGridColumnDropSeparator : Separator
{
#region Constructors
static DataGridColumnDropSeparator()
{
DefaultStyleKeyProperty.OverrideMetadata(
typeof(EGC.DataGridColumnDropSeparator),
new FrameworkPropertyMetadata(typeof(EGC.DataGridColumnDropSeparator)));
WidthProperty.OverrideMetadata(
typeof(EGC.DataGridColumnDropSeparator),
new FrameworkPropertyMetadata(null, new CoerceValueCallback(OnCoerceWidth)));
HeightProperty.OverrideMetadata(
typeof(EGC.DataGridColumnDropSeparator),
new FrameworkPropertyMetadata(null, new CoerceValueCallback(OnCoerceHeight)));
}
#endregion
#region Static Methods
private static object OnCoerceWidth(DependencyObject d, object baseValue)
{
double width = (double)baseValue;
if (DoubleUtil.IsNaN(width))
{
return 2.0;
}
return baseValue;
}
private static object OnCoerceHeight(DependencyObject d, object baseValue)
{
double height = (double)baseValue;
EGC.DataGridColumnDropSeparator separator = (EGC.DataGridColumnDropSeparator)d;
if (separator._referenceHeader != null && DoubleUtil.IsNaN(height))
{
return separator._referenceHeader.ActualHeight;
}
return baseValue;
}
#endregion
#region Properties
internal EGC.DataGridColumnHeader ReferenceHeader
{
get
{
return _referenceHeader;
}
set
{
_referenceHeader = value;
}
}
#endregion
#region Data
private EGC.DataGridColumnHeader _referenceHeader;
#endregion
}
}