gpt4 book ai didi

c# - WPF - DataGrid 将列绑定(bind)到方法而不是属性

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:00 25 4
gpt4 key购买 nike

我有一个代表顶点的类,它可以有多个属性。每个属性都由其名称标识。

public class Vertex
{
private Dictionary<string, Attr> attributes;

public Attr GetAttributeByName(string attributeName)
{
Attr attribute;
if (attributes.TryGetValue(attributeName, out attribute))
{
return attribute;
}

return null;
}
}

我想要一个DataGrid那将有它的ItemsSource绑定(bind)到一些 ObservableCollection<Vertex> .每列应代表顶点的一个属性。我想在运行时控制列(添加新列或删除旧列)。但我无法做到这一点,因为新的列绑定(bind)需要将从中获取单元格数据的属性名称。但我需要绑定(bind)来调用方法 GetAttributeByName()使用属性的名称来获取数据,而不仅仅是获取属性。

string newAttributeName = "some_name";
DataGridTextColumn newColumn = new DataGridTextColumn();
newColumn.Header = newAttributeName;
newColumn.Binding = ???;

dataGrid.Columns.Add(newColumn);

有什么办法吗?

最佳答案

Is there some way to do it?

不,你不能真正绑定(bind)到这样的方法。

但是如果你公开 Dictionary<string, Attr>作为 Vertex 的公共(public)属性(property)类,你应该能够绑定(bind)到这个:

string newAttributeName = "some_name";
DataGridTextColumn newColumn = new DataGridTextColumn();
newColumn.Header = newAttributeName;
newColumn.Binding = new Binding($"Attributes[{newAttributeName}]");

关于c# - WPF - DataGrid 将列绑定(bind)到方法而不是属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902634/

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