47 lines
1.9 KiB
C#
47 lines
1.9 KiB
C#
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using Microsoft.UI.Xaml.Data;
|
|
|
|
namespace Hyperbar.UI.Windows;
|
|
|
|
public class GridExtension
|
|
{
|
|
public static readonly DependencyProperty GridColumnBindingPathProperty =
|
|
DependencyProperty.RegisterAttached("GridColumnBindingPath",
|
|
typeof(string), typeof(GridExtension),
|
|
new PropertyMetadata(null, OnGridBindingPathPropertyChanged));
|
|
|
|
public static readonly DependencyProperty GridRowBindingPathProperty =
|
|
DependencyProperty.RegisterAttached("GridRowBindingPath",
|
|
typeof(string), typeof(GridExtension),
|
|
new PropertyMetadata(null, OnGridBindingPathPropertyChanged));
|
|
|
|
public static string GetGridColumnBindingPath(DependencyObject dependencyObject) =>
|
|
(string)dependencyObject.GetValue(GridColumnBindingPathProperty);
|
|
|
|
public static string GetGridRowBindingPath(DependencyObject dependencyObject) =>
|
|
(string)dependencyObject.GetValue(GridRowBindingPathProperty);
|
|
|
|
public static void SetGridColumnBindingPath(DependencyObject dependencyObject, string value) =>
|
|
dependencyObject.SetValue(GridColumnBindingPathProperty, value);
|
|
public static void SetGridRowBindingPath(DependencyObject dependencyObject, string value) =>
|
|
dependencyObject.SetValue(GridRowBindingPathProperty, value);
|
|
|
|
private static void OnGridBindingPathPropertyChanged(DependencyObject dependencyObject,
|
|
DependencyPropertyChangedEventArgs args)
|
|
{
|
|
if (args.NewValue is string propertyPath)
|
|
{
|
|
DependencyProperty gridProperty =
|
|
args.Property == GridColumnBindingPathProperty
|
|
? Grid.ColumnProperty
|
|
: Grid.RowProperty;
|
|
|
|
BindingOperations.SetBinding(
|
|
dependencyObject,
|
|
gridProperty,
|
|
new Binding { Path = new PropertyPath(propertyPath) });
|
|
}
|
|
}
|
|
}
|