将Listview绑定到多个源

时间:2011-10-30 01:46:35

标签: wpf binding

我遇到问题,如果你能提供帮助,我会很高兴。 所以,我将“Listview”绑定到“Feeds”对象,这是一个FeedViewModel对象。

但是在某些时候,我想展示一些FeedViewModel对象中没有但存在于MainViewModel对象中的数据。 在我的例子中,对于ex-i我想显示每个feed的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 个答案:

答案 0 :(得分:1)

DataContext更改为模板化项目,以转到主视图模型,您可以使用RelativeSource定位父DataContext,例如。

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