1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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(
- nameof(Layout), typeof(ColLayout), typeof(Col), new FrameworkPropertyMetadata(default(ColLayout), FrameworkPropertyMetadataOptions.AffectsParentMeasure));
- public ColLayout Layout
- {
- get => (ColLayout) GetValue(LayoutProperty);
- set => SetValue(LayoutProperty, value);
- }
- public static readonly DependencyProperty OffsetProperty = DependencyProperty.Register(
- nameof(Offset), typeof(int), typeof(Col), new FrameworkPropertyMetadata(ValueBoxes.Int0Box, FrameworkPropertyMetadataOptions.AffectsParentMeasure));
- public int Offset
- {
- get => (int) GetValue(OffsetProperty);
- set => SetValue(OffsetProperty, value);
- }
- public static readonly DependencyProperty SpanProperty = DependencyProperty.Register(
- nameof(Span), typeof(int), typeof(Col), new FrameworkPropertyMetadata(ColLayout.ColMaxCellCount, FrameworkPropertyMetadataOptions.AffectsParentMeasure), OnSpanValidate);
- private static bool OnSpanValidate(object value)
- {
- var v = (int) value;
- return v is >= 1 and <= ColLayout.ColMaxCellCount;
- }
- public int Span
- {
- get => (int) GetValue(SpanProperty);
- set => SetValue(SpanProperty, value);
- }
- public static readonly DependencyProperty IsFixedProperty = DependencyProperty.Register(
- nameof(IsFixed), typeof(bool), typeof(Col), new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.AffectsParentMeasure));
- public bool IsFixed
- {
- get => (bool) GetValue(IsFixedProperty);
- set => SetValue(IsFixedProperty, ValueBoxes.BooleanBox(value));
- }
- internal int GetLayoutCellCount(ColLayoutStatus status)
- {
- if (Layout is not null)
- {
- return status switch
- {
- ColLayoutStatus.Xs => Layout.Xs,
- ColLayoutStatus.Sm => Layout.Sm,
- ColLayoutStatus.Md => Layout.Md,
- ColLayoutStatus.Lg => Layout.Lg,
- ColLayoutStatus.Xl => Layout.Xl,
- ColLayoutStatus.Xxl => Layout.Xxl,
- ColLayoutStatus.Auto => 0,
- _ => throw new ArgumentOutOfRangeException(nameof(status), status, null),
- };
- }
- if (IsFixed)
- {
- return 0;
- }
- return Span;
- }
- }
|