我有一个使用Source
和ListCollectionView
我的ListBox
使用类似
<GroupBox Tag="{Binding Path=Items[0].Header}">
<GroupBox.Header>
<TextBlock Text="{Binding Path=Items[0].Header}" FontStyle="Italic" Foreground="Gray" FontSize="13" />
</GroupBox.Header>
<ItemsPresenter />
</GroupBox>
它是这样应用的
<ListBox.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"/>
</ListBox.GroupStyle>
现在我有一个按钮,当点击时应该将某个分组带入视图(将列表框滚动到适当的位置)
foreach (var groupBox in FindVisualChildren<GroupBox>(this))
{
if (groupBox.Tag.ToString() == "M")
groupBox.BringIntoView();
}
这很有效。但是,如果在我的按钮按下事件中我改变了我的排序
MyVm.MyView.GroupDescriptions.Clear();
MyVm.MyView.SortDescriptions.Clear();
MyVm.MyView.GroupDescriptions.Add(new PropertyGroupDescription("Header"));
MyVm.MyView.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Descending));
MyVm.MyView.SortDescriptions.Add(new SortDescription("Data", ListSortDirection.Descending));
然后立即再次尝试BringIntoView相应的groupbox,找不到groupbox。 FindVisualChildren
找不到任何组框,只查找组项。
此处提供完整Repro: https://gist.github.com/anonymous/9417168
任何帮助表示赞赏!