83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
using Avalonia;
|
||
using Avalonia.Controls;
|
||
using System.Collections.ObjectModel;
|
||
|
||
namespace Cowain.Base.Helpers;
|
||
|
||
public class GridHelper
|
||
{
|
||
// 定义RowDefinitions附加属性
|
||
public static readonly AttachedProperty<ObservableCollection<RowDefinition>> RowDefinitionsProperty =
|
||
AvaloniaProperty.RegisterAttached<Grid, ObservableCollection<RowDefinition>>(
|
||
"RowDefinitions", typeof(GridHelper));
|
||
|
||
// 定义ColumnDefinitions附加属性
|
||
public static readonly AttachedProperty<ObservableCollection<ColumnDefinition>> ColumnDefinitionsProperty =
|
||
AvaloniaProperty.RegisterAttached<Grid, ObservableCollection<ColumnDefinition>>(
|
||
"ColumnDefinitions", typeof(GridHelper));
|
||
|
||
// RowDefinitions属性的Get方法
|
||
public static ObservableCollection<RowDefinition> GetRowDefinitions(AvaloniaObject element)
|
||
{
|
||
return element.GetValue(RowDefinitionsProperty);
|
||
}
|
||
|
||
// RowDefinitions属性的Set方法
|
||
public static void SetRowDefinitions(AvaloniaObject element, ObservableCollection<RowDefinition> value)
|
||
{
|
||
element.SetValue(RowDefinitionsProperty, value);
|
||
|
||
// 当属性值变化时,更新Grid的RowDefinitions
|
||
if (element is Grid grid && value != null)
|
||
{
|
||
grid.RowDefinitions.Clear();
|
||
foreach (var definition in value)
|
||
{
|
||
grid.RowDefinitions.Add(definition);
|
||
}
|
||
|
||
// 监听集合变化,动态更新Grid
|
||
value.CollectionChanged += (sender, e) =>
|
||
{
|
||
grid.RowDefinitions.Clear();
|
||
foreach (var definition in value)
|
||
{
|
||
grid.RowDefinitions.Add(definition);
|
||
}
|
||
};
|
||
}
|
||
}
|
||
|
||
// ColumnDefinitions属性的Get方法
|
||
public static ObservableCollection<ColumnDefinition> GetColumnDefinitions(AvaloniaObject element)
|
||
{
|
||
return element.GetValue(ColumnDefinitionsProperty);
|
||
}
|
||
|
||
// ColumnDefinitions属性的Set方法
|
||
public static void SetColumnDefinitions(AvaloniaObject element, ObservableCollection<ColumnDefinition> value)
|
||
{
|
||
element.SetValue(ColumnDefinitionsProperty, value);
|
||
|
||
// 当属性值变化时,更新Grid的ColumnDefinitions
|
||
if (element is Grid grid && value != null)
|
||
{
|
||
grid.ColumnDefinitions.Clear();
|
||
foreach (var definition in value)
|
||
{
|
||
grid.ColumnDefinitions.Add(definition);
|
||
}
|
||
|
||
// 监听集合变化,动态更新Grid
|
||
value.CollectionChanged += (sender, e) =>
|
||
{
|
||
grid.ColumnDefinitions.Clear();
|
||
foreach (var definition in value)
|
||
{
|
||
grid.ColumnDefinitions.Add(definition);
|
||
}
|
||
};
|
||
}
|
||
}
|
||
}
|