[WPF] Listview, vue personnalisée
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:
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:
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:
1 2
| <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},ResourceId=ImageView}"
TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}"> |
et
Code:
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