2010-09-10 10 views
3

J'ai une fenêtre avec un TabControl que j'ai bind à une liste de objec, j'appelle MyItem:Comment faire pour trier une Listview dans un DataTemplate en XAML seulement?

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

Cette classe MyItem a ObservableCollection, que je veux lier à un Listview, je fais cela avec un DataTemplate. BUT: Je voudrais trier automatiquement cette ObservableCollection en XAML. En général, je voudrais utiliser un CollectionViewSource, mais je ne peux pas trouver un moyen de ça ... Je l'ai essayé des trucs comme ça:

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

Mais chaque fois que j'ai la même erreur:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=MyDayList; DataItem=null; target element is 'CollectionViewSource' (HashCode=58368655); target property is 'Source' (type 'Object')

Je n'arrive pas à trouver un moyen de faire un lien entre le dayList dans ListView ItemsSource et le dayList dans le CollectionRessource. Est-ce que vous avez une idée?

FYI: le tri préalable de ObservableCollection n'est pas faisable, en raison de la nature de la classe que j'utilise.

Répondre