gpt4 book ai didi

wpf - 折叠除第一个组之外的所有组

转载 作者:行者123 更新时间:2023-12-02 04:16:28 27 4
gpt4 key购买 nike

我有一个带有分组 ItemsSource 的 DataGrid。每个组上都有一个扩展器,因此我可以展开/折叠所有组。现在,我尝试默认折叠所有组,但使第一个组保持展开状态。项目源是动态的,因此我无法构建任何转换器来检查组名称。我必须通过组索引来完成。

可以在XAML中执行吗?或者在代码隐藏中?

最佳答案

这可能有点晚了,但为了帮助解决类似的问题,在这种情况下定义“可视化树辅助类”会很有帮助。

    // the visual tree helper class
public static class VisualTreeHelper
{
public static Collection<T> GetVisualChildren<T>(DependencyObject current) where T : DependencyObject
{
if (current == null)
return null;

var children = new Collection<T>();
GetVisualChildren(current, children);
return children;
}
private static void GetVisualChildren<T>(DependencyObject current, Collection<T> children) where T : DependencyObject
{
if (current != null)
{
if (current.GetType() == typeof(T))
children.Add((T)current);

for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(current); i++)
{
GetVisualChildren(System.Windows.Media.VisualTreeHelper.GetChild(current, i), children);
}
}
}
}

// then you can use the above class like this:
Collection<Expander> collection = VisualTreeHelper.GetVisualChildren<Expander>(dataGrid1);

foreach (Expander expander in collection)
expander.IsExpanded = false;

collection[0].IsExpanded = true;

功劳归this forum

关于wpf - 折叠除第一个组之外的所有组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673196/

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