是否可以在WPF DataGrid顶级组中拥有不同数量的子组?
我需要在datagrid中有类似树视图的东西,其中类似于扩展器的树节点仅包含一些头,而底层叶包含实际数据行。我试图通过以下方法来实现这一目标:
public class User
{
public Token Token { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public string Country { get; set; }
}
public class Token
{
public string PrincipalName { get; set; }
public Token Child { get; set; }
public int Depth
{
get
{
return Child == null ? 1 : Child.Depth + 1;
}
}
public Token Add(string childPrincipalName)
{
var token = this;
while (token.Child != null)
{
token = token.Child;
}
var child = new Token { PrincipalName = childPrincipalName };
token.Child = child;
return this;
}
public static Token Create(string principalName)
{
return new Token { PrincipalName = principalName };
}
}
然后我创建了一些像
这样的条目var users = new List<User>{
new User{ Name="Hiro Nakamura", Gender="M", Age=24, Country="Japan",
Token = Token.Create("first")},
new User{ Name="Mohinder Suresh",Gender="M", Age=26, Country="India",
Token = Token.Create("second").Add("1")},
new User { Name = "Claire Bennette", Gender = "F", Age = 19, Country = "USA",
Token = Token.Create("second").Add("1")},
new User{ Name="Mohinder Suresh",Gender="M", Age=26, Country="India",
Token = Token.Create("second").Add("2")},
new User { Name = "Claire Bennette", Gender = "F", Age = 19, Country = "USA",
Token = Token.Create("second").Add("2")}
};
并形成一个集合视图:
var collection = new ListCollectionView(users);
int tokenLength = users.Max(u => u.Token.Depth);
if (tokenLength > 0)
{
string token = "Token";
string child = ".Child";
string principalName = ".PrincipalName";
for (int i = 0; i < tokenLength; i++)
{
collection.GroupDescriptions.Add(new PropertyGroupDescription(token + principalName));
token += child;
}
}
问题是&#34;第二&#34; group有两个小组:&#34; 1&#34;和&#34; 2&#34; (这是正确的)而#34;第一个&#34;有一个空名称的子组(这不是我需要的)。我想要&#34;首先&#34;小组没有一个小组,只有&#34; Hiro Nakamura&#34;用户本身。