2011-10-30 74 views
0

我面臨的問題,並會很高興,如果你能幫助。 因此,我將「Listview」綁定到FeedsModel對象的「Feeds」對象。綁定Listview到多個來源

但是在某些時候,我想顯示一些數據,這些數據在FeedViewModel對象中不存在,但存在於MainViewModel對象中。 在我的情況下,對於我想要顯示每個提要的URL,但URL不是從Xpath提取源代碼中提取的,而是從MainViewModel.Url的代碼中顯示的MainViewModel對象傳遞的。

但是在我的XAML中,Listview的所有子代只會看到創建問題的「Feeds」對象。

<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> 

有人可以提出什麼可以做?

拉夫

回答

1

DataContext改變爲模板項目,才能到主視圖模型可以針對父母的DataContext使用RelativeSource,例如

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

非常感謝。它的工作:) – code4fun

+0

@gaurav:很高興幫助。 (因爲您在這裏是新手:您可以通過點擊左側的勾號輪廓[接受](http://meta.stackexchange.com/questions/5234/)我的答案。) –