将LongListSelector内的用户控件与当前Item绑定

时间:2014-10-10 12:17:46

标签: xaml windows-phone-7 windows-phone-8 binding

这就是我在做的事。

UserControl.xaml

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
    <phone:LongListSelector
        Name="MainList"
        ItemsSource="{Binding}">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                <views:PostView
                    DataContext="{Binding ElementName=MainList, Path=ItemsSource}">
                </views:PostView>
                </StackPanel>
            </DataPanel>

我希望PostView内的控件与Current ItemsSource元素的属性绑定。但是发生的事情是,我将List of 5对象设置为ItemsSource,我Post视图中的每个元素都获得5个值。

所以我初始化了25个PostView,每个ItemsSource对象5个,而不是1个。

这是我的PostView.xaml有帮助吗

PostView.xaml

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>
    <ItemsControl
        ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=User.Username, Mode=OneWay}" />
                </StackPanel>

User是我绑定的模型中的Object属性。 我该如何解决?

2 个答案:

答案 0 :(得分:2)

您将用户控件绑定到整个集合,而不是仅绑定一个项目。相反,如果DataContext="{Binding ElementName=MainList, Path=ItemsSource}"只使用DataContext="{Binding ElementName=MainList, Path=SelectedItem}"DataContext="{Binding}"应该有用。

答案 1 :(得分:1)

this post获取帮助,为PostView.xaml.cs中的数据设置相关性字段,并从UserControl.xaml

设置