在XAML中对可编辑的ComboBox进行排序

时间:2012-10-26 13:12:39

标签: c# wpf xaml

在添加新记录之后,我想在纯WPF中对可编辑的组合框进行排序。经过一些研究后,我发现了一些使用CollectionViewSource.SortDescription的提示,但它对我没有用。我究竟做错了什么?使用我的DataTemplate的项目的DataContext工作正常,但DataTemplate和资源部分之间的绑定不能对我的条目列表进行排序。


我的XAML部分

<DataTemplate x:Key="Document">
    <DataTemplate.Resources>
        <CollectionViewSource x:Key="SortedLabels" Source="{Binding Parent.Labels}">
            <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="Items"/>
            </CollectionViewSource.SortDescriptions>
        </CollectionViewSource>
    </DataTemplate.Resources>

    <Grid>
    ...
        <ComboBox Name="cbLabel"
                  ItemsSource="{Binding Source={StaticResource SortedLabels}}"
                  IsEditable="True"
                  LostFocus="cbLabel_LostFocus"
                  KeyUp="cbLabel_KeyUp"
                  Visibility="{Binding Path=IsUndiscovered, Converter={StaticResource ResourceKey=BooleanToVisibilityConverter}}"/>
    ...
    </Grid>
</DataTemplate> 

修改 集合Parent.Labels的类型为ObservableCollection<String>

1 个答案:

答案 0 :(得分:0)

很难说因为你没有显示你正在尝试排序的集合,但我的猜测是Parent.Labels中的每个对象都没有Items属性。 PropertyName引用列表中的各个对象的属性,它将查看并尝试排序。我猜你想要更多的“名字”或其他财产。