绑定列表从Window Phone 7中的列表集合中收集

时间:2011-05-20 12:24:55

标签: windows-phone-7 windows-phone

如何从Window Phone 7中的列表集合绑定列表集合,而我能够从单个列表集合绑定

4 个答案:

答案 0 :(得分:1)

首先在你的Xaml中有项目模板。 添加绑定到它。 在代码中定义该绑定属性。 将值分配给已定义的属性。

我的Xaml中有一个项目模板,如下所示:

        <Grid.RowDefinitions>
            <RowDefinition Height="367*" />
        </Grid.RowDefinitions>
        <ListBox HorizontalAlignment="Stretch"  Name="lstbNewOrders" Grid.Row="1" HorizontalContentAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid x:Name="itemTemplate" Background="Transparent" HorizontalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="250"/>
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="40"/>
                            <RowDefinition Height="40"/>
                            <RowDefinition Height="40"/>
                            <RowDefinition Height="20"/>
                        </Grid.RowDefinitions>
                        <TextBlock FontSize="30" Name="txtEbeln" Text="{Binding ebeln}" Grid.Row="0" Grid.Column="0" FontWeight="Bold"  />

                        <TextBlock FontSize="25"   Name="txtCName" Text="{Binding cname}"  Grid.Row="1" Grid.Column="0" />
                        <TextBlock FontSize="25"  Name="txtDate" Text="{Binding date}"  Grid.Row="1" Grid.Column="1"  HorizontalAlignment="Right" TextAlignment="Right"/>
                        <StackPanel Height="30"  Name="stkPanel01" HorizontalAlignment="Right" Grid.Row="0" Grid.Column="1">
                            <TextBlock FontSize="25"  Name="txtNetw" Text="{Binding netw}"   HorizontalAlignment="Right" TextAlignment="Right"/>
                        </StackPanel>
                        <TextBlock FontSize="25" Name="txtVName" Text="{Binding vname}"  Grid.Row="2" Grid.Column="0" />

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

    </Grid>

在我的代码文件中,我将定义如下的绑定:

public class itemListForListBox
        {
            public string ebeln { get; set; }
            public string cname { get; set; }
            public string vname { get; set; }
            public string netw { get; set; }
            public string date { get; set; }

        }

并提供如下值:

void fillList()
        {
            List<itemListForListBox> itemListbox = new List<itemListForListBox>();
            itemListForListBox listItem;
            for (int i = 0; i < 5;i++ )
            {
                listItem = new itemListForListBox();

                listItem.ebeln = "Name "+i;
                listItem.date = "Date "+i;
                listItem.vname = "VName "+i;
                listItem.netw = "Amount "+ i;
                listItem.cname = "CName "+i;

                itemListbox.Add(listItem);
            }

            lstbNewOrders.ItemsSource = itemListbox;

        }

希望这可能会对你有所帮助。 感谢。

答案 1 :(得分:1)

您可以使用以下代码

<ListBox Name="RouteListBox" ItemContainerStyle="{StaticResource RouteListBoxItemStyle}" SelectedItem="{Binding Model.SelectedRoute,Mode=TwoWay}" ItemsSource="{Binding RouteListCollection}">
<i:Interaction.Triggers>
  <i:EventTrigger EventName="Tap">
     <command:EventToCommand Command="{Binding RouteItemSelectedCommand}"/>
  </i:EventTrigger>
</i:Interaction.Triggers>

<ListBox.ItemTemplate>
   <DataTemplate>
       <Grid >
         <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
         </Grid.ColumnDefinitions>

         <TextBlock Text="{Binding RouteName}" Style="{StaticResource RoutesStyle}" Grid.Column="1" />
         <Border  Style="{StaticResource RouteCountBorder}" Visibility="Collapsed" Grid.Column="2">
             <TextBlock Style="{StaticResource RoutesCount}"  Visibility="Collapsed" Text="{Binding ShopCount,Mode=TwoWay}"></TextBlock>
        </Border>

       </Grid>
     </DataTemplate>
  </ListBox.ItemTemplate></ListBox>

答案 2 :(得分:0)

我认为你的意思是你有一系列收藏品?在这种情况下,您可以嵌套ItemsControls(或ListBox):

<ItemsControl ItemsSource={Binding Path=???}>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <!-- here is your nested itemscontrol -->
      <ItemsControl ItemsSource={Binding Path=???}>
        <ItemsControl.ItemTemplate>
          <DataTemplate>
            <!-- your content goes here -->
          </DataTemplate>
        <ItemsControl.ItemTemplate>
      </ItemsControl>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

答案 3 :(得分:0)

假设我们有一个ListBox lstbx,一个集合可以说

List <String> listdata = new List<String>();

我们可以通过Add()向集合中添加项目 前 -

listdata.Add("Nazi 1");
    or 
    forloop(expression)
    {
     listdata.Add("vale")
     }

然后我们可以将集合直接分配给列表框'item Source    的离。

lstbx.ItemSource=listdata;

//确保如果您在集合的单个项目中存储多个变量,则应为 ListBox 项目模板创建自定义数据模板。 !