Bonjour à tous,

Je souhaiterai créer des vues personnalisée pour un listview. J'ai trouvé cet example qui marche bien http://blogs.msdn.com/atc_avalon_tea...28/585844.aspx
mais je voudrai faire la même chose, sans avoir à créer un projet séparer où définir mes vues. Je voudrai tout définir dans mon projet principal.

J'ai déjà essayé:

- d'ajouter un nouveau ResourceDictionary à mon projet principal, avec à l'intérieur les styles utilisés pour les vues:

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
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:l="clr-namespace:Avalon.Demo"
    >
 
  <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},ResourceId=ImageView}"
         TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}">
(...)
  </Style>
 
  <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},ResourceId=ImageViewItem}"
         TargetType='{x:Type ListViewItem}' BasedOn='{StaticResource {x:Type ListBoxItem}}'>
(...)
  </Style> 
 
</ResourceDictionary>
Et j'essaye ensuite d'utiliser ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<Page xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
      xmlns:l="clr-namespace:Avalon.Demo">
    <ListView>
      <ListView.View>
        <l:ImageView />
      </ListView.View>
      <ListView.ItemsSource>
        <l:FileCollection />
      </ListView.ItemsSource>
    </ListView>
</Page>
Mais ça ne marche pas (mon listview reste invisible). Je pense que quelque chose cloche à cause de

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},ResourceId=ImageView}"
TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}">
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
protected override object DefaultStyleKey
{
get
{
return new ComponentResourceKey(GetType(), "ImageView");
}
}
puisque justement ici le code est destiné à fonctionner avec une assembly extérieure, mais je ne sais pas comment changer ça...

Merci d'avance pour votre aide,
Jérémy