如何将可观察集合中的项目放入网格中?

时间:2013-10-20 09:58:22

标签: c# .net xaml windows-phone-8 windows-store-apps

在我为Windows Phone 8编写应用程序时,我遇到了一个问题。在ViewModel中我有

public ObservableCollection<Ball> ListOfBalls { get; set;}

每个球都有行号和列号。

在视图中我已指定Grid.Row我想要放置一个网格(10行x 10列)然后我想在每个网格单元格中放入一个来自ListOfBalls的球。

所以,那是View

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="5*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid x:Name="GamePlayGrid"
          Grid.Row="1"
          Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <!-- I've tried to add ItemsControl here -->
    </Grid>
</Grid>

我尝试定义网格(10行x 10列),然后在此网格的范围内,我尝试将ItemsControl添加到DataTemplate,但我不确定它是否正确,因为在此期间执行我得到了一些未处理的异常......我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的代码

已修改,已添加图片

  <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
     <ItemsControl ItemsSource="{Binding ListOfBalls}"/>
       <ItemsControl.ItemTemplate>
          <DataTemplate>
            <StackPanel>
             <Image Height="30" Width="30" Source="{Binding Path=BallImageName}"/>
             <TextBlock Text="{Binding BallName}"/>
            <StackPanel>
          </DataTemplate>
       </ItemsControl.ItemTemplate>
    </ItemsControl> 
  </Grid>

BallImageName是球形图像的属性,请添加定位文件的来源。 (例如: “图像/ myimage.png”)