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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 listbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager