加上给 Grid 行列命名绑定的辅助方法
详细请看 [WPF 给 Grid 的辅助方法 添加行列名称绑定](https://lindexi.gitee.io/post/WPF-%E7%BB%99-Grid-%E7%9A%84%E8%BE%85%E5%8A%A9%E6%96%B9%E6%B3%95-%E6%B7%BB%E5%8A%A0%E8%A1%8C%E5%88%97%E5%90%8D%E7%A7%B0%E7%BB%91%E5%AE%9A.html )
This commit is contained in:
1 parent
6802dee43d
commit
16c339946e
2 files changed
+109
No files matched your search
@@ -141,6 +141,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Converter\ThicknessSplitConverter.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\DependencyObjectExtension.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\FrameworkElementExtension.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\GridExtension.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\LangExtension.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\StringExtension.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\ValueExtension.cs" />
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace HandyControl.Tools.Extension
|
||||
{
|
||||
public class GridExtensions
|
||||
{
|
||||
public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached(
|
||||
"Name", typeof(string), typeof(GridExtensions), new PropertyMetadata(default(string)));
|
||||
|
||||
public static void SetName(DependencyObject element, string value)
|
||||
{
|
||||
element.SetValue(NameProperty, value);
|
||||
}
|
||||
|
||||
public static string GetName(DependencyObject element)
|
||||
{
|
||||
return (string) element.GetValue(NameProperty);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty RowNameProperty = DependencyProperty.RegisterAttached(
|
||||
"RowName", typeof(string), typeof(GridExtensions),
|
||||
new PropertyMetadata(default(string), RowName_PropertyChanged));
|
||||
|
||||
private static void RowName_PropertyChanged(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)
|
||||
{
|
||||
return (string) element.GetValue(RowNameProperty);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ColumnNameProperty = DependencyProperty.RegisterAttached(
|
||||
"ColumnName", typeof(string), typeof(GridExtensions),
|
||||
new PropertyMetadata(default(string), ColumnName_PropertyChanged));
|
||||
|
||||
private static void ColumnName_PropertyChanged(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)
|
||||
{
|
||||
return (string) element.GetValue(ColumnNameProperty);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user