将分组的ListCollectionView中的分组带入视图

时间:2014-03-07 18:36:17

标签: c# wpf xaml

我有一个使用SourceListCollectionView

的列表框

我的ListBox使用类似

的GroupStyle
<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

任何帮助表示赞赏!

0 个答案:

没有答案