Salut
J'essai de suivre cet exemple
En fait, je fais un album photos via un fichier XML (databinding). Voici un exemple de ce fichier:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <Window.Resources> <local:Animals x:Key="animals"/> <CollectionViewSource x:Key="cvs" Source="{Binding Source={StaticResource animals}, Path=AnimalList}"> <CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="Category"/> </CollectionViewSource.GroupDescriptions> </CollectionViewSource> <DataTemplate x:Key="animalTemplate"> <TextBlock Text="{Binding Path=Name}" Foreground="MediumSeaGreen"/> </DataTemplate> </Window.Resources> <ItemsControl ItemsSource="{Binding Source={StaticResource cvs}}" ItemTemplate="{StaticResource animalTemplate}"/>
J'ai deux listbox dans un grid (contenant ce datacontext : XPath=/Application/Albums/Album)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 < Application > < Albums > < Album name="Default" auteur="default"> < Photo> < Name >titi< / Name > < Image >D:\Wallpaper\As_cold_as_silence_2.jpg< / Image > < / Photo > < / Album > < Album name="test" auteur="Nous" > .................. < / Album > < / Albums > < / Application >
Une des listes box contient le nom des albums (on l'appellera LA) et quand je choisi sur un album la seconde liste (on l'appellera LP) affiche la liste des photos que l'album contient. Je fais ca en passant par un Datatemplate. Voila le code de LA
Et le code de LP:Code:
1
2
3
4
5
6 <DataTemplate x:Key="AlbumTemplate1"> <StackPanel> <TextBlock Text="{Binding Mode=OneWay, XPath=@name}"/> </StackPanel> </DataTemplate>
Maintenant je veux integrer du tri. Donc imaginons que j'ai un button qui quand je click dessus, il me tri LP. Le probleme avec l'exemple au debut de ce post c'est que d'une part toutes les photos sont affichees (de tous les albums) et d'autre part quand je choisi un autre album rien ne se passe (pas de changement de photos).Code:
1
2
3
4
5
6
7
8
9 <DataTemplate x:Key="PhotoTemplate"> <StackPanel> <TextBlock Text="{Binding Mode=OneWay, XPath=Name}" TextAlignment="Center"/> <Border BorderBrush="Black" BorderThickness="4" CornerRadius="5" Margin="6"> <Image Width="100" Height="100" Source="{Binding Mode=OneWay, XPath=Image}"/> </Border> </StackPanel> </DataTemplate>
Et c'est normal puisque que l'itemSource de ma listbox est lie au CollectionViewSource lui meme lie a ma source XML (directement).
Voici mon code:
Donc j'ai essayer d'integrer mon template au CollectionViewSource pour qu'il choisissent les donnees de mon databinding. (mais je dois peut etre faire l'inverse c'est a dire integrer le tri dans mon template)Code:
1
2
3
4
5 < CollectionViewSource x:Key="NameView" Source="{Binding Source={StaticResource PhotosXMLSource}, XPath=/Application/Albums/Album/Photo}" > < CollectionViewSource.SortDescriptions > < cmortDescription PropertyName="Name" Direction="Ascending" /> < /CollectionViewSource.SortDescriptions > < / CollectionViewSource >
et la listboxCode:
1
2 < CollectionViewSource x:Key="NameView" Source="{Binding Source={StaticResource PhotoTemplate}" >
De cette facon ca ne fonctionne pas il ne trouve pas les donnees et n'affiche donc pas les photos.Code:
1
2<listbox ... ItemsSource="{Binding source={static NameView} ...>
Est ce que quelqu'un peut m'aider ??
Merci par avance
PS: desole pour la premiere version de ce post illisible.
--------------------------------------------------------------------------------
Sincerely