gpt4 book ai didi

wpf - 如何从DataGridColumn获取DataGridColumnHeader?

转载 作者:行者123 更新时间:2023-12-02 03:43:04 26 4
gpt4 key购买 nike

我的代码如下:

 void mainDataContextObj_CutSelectedColumnEvent(string columnId)
{
IList<DataGridColumn> columns = dg.Columns;

for(int i=2; i<dg.Columns.Count; i++)
{
DataGridColumnHeader headerObj = dg.Columns[i].Header as DataGridColumnHeader;

//This always returns headerObj as null!!!

}
}

我需要列中的DataGridColumnHeader。我哪里出错了?

最佳答案

DataGridColumn 的 Header 对象实际上是该列的可见标题,无论您将其设置为什么。 DataGridColumn 不是可视化树的一部分,因此没有直接的方法来访问它的 DataGridColumnHeader(我们甚至无法确定它是否存在)。但您可以执行类似的操作来尝试访问它

DataGridColumnHeader headerObj = GetColumnHeaderFromColumn(column);

private DataGridColumnHeader GetColumnHeaderFromColumn(DataGridColumn column)
{
// dataGrid is the name of your DataGrid. In this case Name="dataGrid"
List<DataGridColumnHeader> columnHeaders = GetVisualChildCollection<DataGridColumnHeader>(dataGrid);
foreach (DataGridColumnHeader columnHeader in columnHeaders)
{
if (columnHeader.Column == column)
{
return columnHeader;
}
}
return null;
}

public List<T> GetVisualChildCollection<T>(object parent) where T : Visual
{
List<T> visualCollection = new List<T>();
GetVisualChildCollection(parent as DependencyObject, visualCollection);
return visualCollection;
}

private void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : Visual
{
int count = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < count; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
if (child is T)
{
visualCollection.Add(child as T);
}
else if (child != null)
{
GetVisualChildCollection(child, visualCollection);
}
}
}

关于wpf - 如何从DataGridColumn获取DataGridColumnHeader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com