1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- namespace HandyControl.Controls;
- public class GridAttach
- {
- public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached(
- "Name", typeof(string), typeof(GridAttach), new PropertyMetadata(default(string)));
- public static void SetName(DependencyObject element, string value)
- => element.SetValue(NameProperty, value);
- public static string GetName(DependencyObject element)
- => (string) element.GetValue(NameProperty);
- public static readonly DependencyProperty RowNameProperty = DependencyProperty.RegisterAttached(
- "RowName", typeof(string), typeof(GridAttach), new PropertyMetadata(default(string), OnRowNameChanged));
- private static void OnRowNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (d is FrameworkElement frameworkElement)
- {
- if (e.NewValue is string rowName)
- {
- if (string.IsNullOrEmpty(rowName))
- {
- return;
- }
- if (frameworkElement.Parent is Grid grid)
- {
- for (var i = 0; i < grid.RowDefinitions.Count; i++)
- {
- var gridRowDefinition = grid.RowDefinitions[i];
- var gridRowName = GetName(gridRowDefinition);
- if (!string.IsNullOrEmpty(gridRowName) &&
- gridRowName.Equals(rowName, StringComparison.Ordinal))
- {
- Grid.SetRow(frameworkElement, i);
- return;
- }
- }
- }
- }
- }
- }
- public static void SetRowName(DependencyObject element, string value)
- => element.SetValue(RowNameProperty, value);
- public static string GetRowName(DependencyObject element)
- => (string) element.GetValue(RowNameProperty);
- public static readonly DependencyProperty ColumnNameProperty = DependencyProperty.RegisterAttached(
- "ColumnName", typeof(string), typeof(GridAttach), new PropertyMetadata(default(string), OnColumnNameChanged));
- private static void OnColumnNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- if (d is FrameworkElement frameworkElement)
- {
- if (e.NewValue is string columnName)
- {
- if (string.IsNullOrEmpty(columnName))
- {
- return;
- }
- if (frameworkElement.Parent is Grid grid)
- {
- for (var i = 0; i < grid.ColumnDefinitions.Count; i++)
- {
- var gridColumnDefinition = grid.ColumnDefinitions[i];
- var gridColumnName = GetName(gridColumnDefinition);
- if (!string.IsNullOrEmpty(gridColumnName) &&
- gridColumnName.Equals(columnName, StringComparison.Ordinal))
- {
- Grid.SetColumn(frameworkElement, i);
- return;
- }
- }
- }
- }
- }
- }
- public static void SetColumnName(DependencyObject element, string value)
- => element.SetValue(ColumnNameProperty, value);
- public static string GetColumnName(DependencyObject element)
- => (string) element.GetValue(ColumnNameProperty);
- }
|