2011-10-30 4 views
0

Je suis confronté à un problème et je serais heureux si vous pouviez aider. Donc, je lie "Listview" à l'objet "Feeds" qui est un objet FeedViewModel.Reliure Listview à plusieurs sources

Mais à un moment donné, je veux montrer certaines données qui ne sont pas présentes dans l'objet FeedViewModel mais qui sont présentes dans l'objet MainViewModel. Dans mon cas, pour ex-je veux afficher l'URL pour chaque flux, mais l'URL n'est pas extrait de l'extraction Xpath de la source, mais transmis à partir de l'objet MainViewModel que j'ai montré dans le code par MainViewModel.Url. Mais dans mon XAML, tous les enfants de la Listview ne regardent que dans l'objet "Feeds" qui crée un problème.

<ListView Grid.Row="3" Margin="5" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Feeds}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
         --------------some code -------------- 
         <Label Margin="4">Critic:</Label> 
         <Label Grid.Column="1" Content="{Binding Creator}" Margin="4" /> 
         <Label Grid.Row="1" Margin="4">Title:</Label> 
         <Label Grid.Column="1" Grid.Row="1" Content="{Binding Title}" Margin="4" FontWeight="Bold" /> 
         <Label Grid.Row="2" Margin="4">Location:</Label> 
         <Label Grid.Column="1" Grid.Row="2" Content="{Binding **MainViewModel.Url**}" Margin="4" /> 
         <Label Grid.Row="3" Margin="4">Date:</Label> 
         <Label Grid.Column="1" Grid.Row="3" Content="{Binding Date}" Margin="4" /> 
         <Label Grid.Row="4" Margin="4">Rating:</Label> 
         <Label Grid.Column="1" Grid.Row="4" Content="{Binding Rating}" Margin="4" /> 
         <Label Grid.Row="5" Margin="4" HorizontalAlignment="Stretch">Description:</Label> 
         <TextBlock Grid.Column="1" Grid.Row="5" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Description}" Padding="4" Margin="4" /> 
        </Grid> 
       </Border> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

Quelqu'un peut-il suggérer ce qui peut être fait?

Gaurav

Répondre

1

Le DataContext est changé à l'élément basé sur un modèle, pour se rendre à la principale viewmodel vous pouvez cibler DataContext un parent en utilisant RelativeSource, par exemple

<Label Grid.Column="1" Grid.Row="2" 
     DataContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListView}}" 
     Content="{Binding Url}" Margin="4" /> 
+0

Merci beaucoup.Il a travaillé :) – code4fun

+0

@gaurav: Glad it helps. (Comme vous êtes nouveau ici: Vous pouvez [accepter] (http://meta.stackexchange.com/questions/5234/) ma réponse en cliquant sur la coche sur la gauche.) –

Questions connexes