如何仅在XAML中对DataTemplate中的Listview进行排序?

时间:2010-09-10 11:55:56

标签: xaml sorting listview datatemplate

我有一个带有TabControl的窗口,我已经绑定到一个objec列表,我称之为MyItem:

    <TabControl Name="MyTabPNL"  Background="Gainsboro"
        ItemsSource="{Binding MyItemList, ElementName=WatcherWindow}"
        ContentTemplate="{StaticResource tabItemTemplate}">
    </TabControl>

这个MyItem类有一个ObservableCollection,我想绑定到Listview,我是用DataTemplate做的。 目标:我想在XAML中自动排序这个ObservableCollection。通常我会使用CollectionViewSource,但我找不到这种方法......我尝试过这样的东西:

<DataTemplate x:Key="tabItemTemplate">
        <DataTemplate.Resources> 
            <CollectionViewSource x:Key='dayList' Source="{Binding MyDayList}">
                <CollectionViewSource.SortDescriptions>
                    <scm:SortDescription PropertyName="MyDate" Direction="Descending"  />
                </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
        </DataTemplate.Resources>

    <Grid >
         <ListView ItemsSource="{Binding Source={StaticResource dayList}}" >
            <ListView.View>
                <GridView x:Name="gridvwDay" >
                    <GridViewColumn Header="MyDate" 
                          CellTemplate="{StaticResource myCellTemplatePNLDate}"
                          HeaderContainerStyle="{StaticResource CustomHeaderStyleNeutral}" 
                           Width="70" />
                </GridView>
            </ListView.View>
        </ListView>
   </Grid>

但每次我都有同样的错误:

  

System.Windows.Data错误:2:不能   找到管理FrameworkElement或   Target的FrameworkContentElement   元件。   BindingExpression:路径= MyDayList;   的DataItem = NULL;目标元素是   'CollectionViewSource'   (的HashCode = 58368655);目标财产   是'来源'(类型'对象')

我找不到在ListView ItemsSource中的dayList和CollectionRessource中的dayList之间建立链接的方法。 你们有个主意吗?

仅供参考:由于我正在使用的Class的性质,对ObservableCollection进行预排序是不可行的。

1 个答案:

答案 0 :(得分:1)

你试过简单吗,

<ListView ItemsSource="{StaticResource dayList}">

根据文档:http://msdn.microsoft.com/en-us/library/ms750950.aspx

当它在页面上只是静态时你不需要绑定:)