More work
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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) });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user