97 lines
3.1 KiB
C#
97 lines
3.1 KiB
C#
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using HandyControl.Data;
|
|
using HandyControl.Tools.Extension;
|
|
|
|
namespace HandyControl.Controls
|
|
{
|
|
public class Col : ContentControl
|
|
{
|
|
public static readonly DependencyProperty LayoutProperty = DependencyProperty.Register(
|
|
"Layout", typeof(ColLayout), typeof(Col), new PropertyMetadata(default(ColLayout)));
|
|
|
|
public ColLayout Layout
|
|
{
|
|
get => (ColLayout)GetValue(LayoutProperty);
|
|
set => SetValue(LayoutProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty OffsetProperty = DependencyProperty.Register(
|
|
"Offset", typeof(int), typeof(Col), new PropertyMetadata(ValueBoxes.Int0Box));
|
|
|
|
public int Offset
|
|
{
|
|
get => (int)GetValue(OffsetProperty);
|
|
set => SetValue(OffsetProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty SpanProperty = DependencyProperty.Register(
|
|
"Span", typeof(int), typeof(Col), new PropertyMetadata(24), OnSpanValidate);
|
|
|
|
private static bool OnSpanValidate(object value)
|
|
{
|
|
var v = (int)value;
|
|
return v >= 1 || v <= 24;
|
|
}
|
|
|
|
public int Span
|
|
{
|
|
get => (int) GetValue(SpanProperty);
|
|
set => SetValue(SpanProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty IsFixedProperty = DependencyProperty.Register(
|
|
"IsFixed", typeof(bool), typeof(Col), new PropertyMetadata(ValueBoxes.FalseBox));
|
|
|
|
public bool IsFixed
|
|
{
|
|
get => (bool) GetValue(IsFixedProperty);
|
|
set => SetValue(IsFixedProperty, value);
|
|
}
|
|
|
|
internal int GetLayoutCellCount(ColLayoutStatus status)
|
|
{
|
|
var result = 0;
|
|
|
|
if (Layout != null)
|
|
{
|
|
if (!IsFixed)
|
|
{
|
|
switch (status)
|
|
{
|
|
case ColLayoutStatus.Xs:
|
|
result = Layout.Xs;
|
|
break;
|
|
case ColLayoutStatus.Sm:
|
|
result = Layout.Sm;
|
|
break;
|
|
case ColLayoutStatus.Md:
|
|
result = Layout.Md;
|
|
break;
|
|
case ColLayoutStatus.Lg:
|
|
result = Layout.Lg;
|
|
break;
|
|
case ColLayoutStatus.Xl:
|
|
result = Layout.Xl;
|
|
break;
|
|
case ColLayoutStatus.Xxl:
|
|
result = Layout.Xxl;
|
|
break;
|
|
case ColLayoutStatus.Auto:
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(status), status, null);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
result = Span;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|