2010-04-07 5 views
1

J'utilise le thème DarkExpression de WPF Futures. Il ne semble pas fonctionner correctement avec les modèles de données.Datatemplates tout en utilisant le thème ne fonctionne pas - WPF

Scénario 1:

Voici comment il ressemble sans DataTemplates:

enter image description here

code:

<ListView Name="playlistListView" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}"> 
        <GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
</ListView> 

Scénario 2: Voici comment ressemble à essayer d'u se DataTemplates tout en utilisant le thème:

enter image description here

code:

 <ListView Name="playlistListView" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <UserControls:SongDataTemplate Margin="4" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

Scénario 3:

Voici comment il ressemble à essayer d'utiliser DataTemplates tout en remplaçant le thème:

enter image description here

code:

<UserControl.Resources> 
    <Style x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="Background" Value="Transparent" /> 
    </Style> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot"> 
    <ListView Name="playlistListView" ItemContainerStyle="{StaticResource ListViewItemStretch}" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <UserControls:SongDataTemplate Margin="4" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

Je veux garder le style de thème, mais je veux aussi utiliser DataTemplates pour définir comment une liste de lecture devrait ressembler. Aucune suggestion?

Note: Dans le scénario 2 et 3 j'ai dû enlever

<ListView.View> 
     <GridView> 
      <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}"> 
       <GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/> 
      </GridViewColumn> 
     </GridView> 
</ListView.View> 

Avant le DataTemplate serait utilisé.

Edit:

La solution donnée ci-dessous, fonctionne si le type est changé en ListBox et je me sers d'une zone de texte à la place. Je ne peux cependant pas le faire fonctionner avec un ListView.

Répondre

1

Vous le faites mal. Lorsque vous souhaitez personnaliser ListView, vous devez utiliser la propriété View qui est de type ViewBase. Dérivez une vue personnalisée de ViewBase, attribuez-la à ListView.View et vous avez terminé. Il y a un exemple dans ViewBase Class Documentation

+0

Merci! Trop de tracas cependant. Je vais juste implémenter ma propre ListView en utilisant ListBox. –

0

ça marche si vous remplacez

<Grid> 
    <UserControls:SongDataTemplate Margin="4" /> 
</Grid> 

avec une zone de texte, par exemple?

Le problème pourrait être généré par votre contrôle utilisateur ..

+0

Non.C'est le même. Si je marque quelque chose, il utilisera la couleur bleue par défaut. D'une manière ou d'une autre, je ne pense pas que les thèmes WPF supportent les datatemplates. –

1

Essayez en utilisant BasedOn

<Style BasedOn={StaticResource {x:Type ListViewItem}} x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    <Setter Property="Background" Value="Transparent" /> 
</Style> 
+0

Cela semble intéressant! J'ai essayé mais j'ai eu une exception: Voir l'image http://i43.tinypic.com/kd5nbt.jpg –

Questions connexes