如何在Windows Phone 8应用程序中创建表结构?

时间:2014-07-22 06:14:15

标签: windows-phone-8

我想在windows phone 8 app中创建学生报告。

有3行和4列 结构如下:

       student1   student2   student3  

subject1

subject2

subject3


总 标记

现在,student1,student2是学生的名字应该来自windows azure数据库。 所有标记都在特定学生的数据库中。对于特定主题,这些标记应该显示在特定学生面前。 所有数据都存在于数据库中。如何以表格形式显示它?

3 个答案:

答案 0 :(得分:1)

我认为包含一些文本块的简单网格控件就可以了。您可以非常轻松地在XAML中定义它:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="0" ... />        
    <TextBlock Grid.Row="1" Grid.Column="0" ... />        
    <TextBlock Grid.Row="2" Grid.Column="0" ... />    
    ...
</Grid>

唯一需要注意的是如何定义高度和宽度。基本上有3种类型的高度/宽度:

  • 静态:用数字定义并以像素为单位

  • 自动:由关键字“自动”定义,并根据内容大小动态更改

  • &#34;填写其余内容&#34;:由星号*符号定义,并使行/列填充网格中可用的其余空间。

查看MSDN documentation for the Grid control了解详情。

答案 1 :(得分:0)

您可以将视图设置为如下所示:

XAML:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <ListBox x:Name="stu" Grid.RowSpan="4" Grid.Column="1" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Disabled">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"></StackPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="10">
                        <TextBlock Text="{Binding name}"></TextBlock>
                        <TextBlock Text="{Binding s1}" TextAlignment="Center"></TextBlock>
                        <TextBlock Text="{Binding s2}" TextAlignment="Center"></TextBlock>
                        <TextBlock Text="{Binding s3}" TextAlignment="Center"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <TextBlock></TextBlock>
        <TextBlock Grid.Row="1" Text="Subject1"></TextBlock>
        <TextBlock Grid.Row="2" Text="Subject2"></TextBlock>
        <TextBlock Grid.Row="3" Text="Subject3"></TextBlock>
    </Grid>

CS:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    List<data> obj = new List<data>();
    obj.Add(new data("Student1", "10", "20", "30"));
    obj.Add(new data("Student2", "0", "10", "20"));
    obj.Add(new data("Student3", "20", "30", "40"));
    obj.Add(new data("Student4", "30", "40", "50"));
    obj.Add(new data("Student5", "40", "50", "60"));
    stu.ItemsSource = obj;
}

public class data
{
    public string name { get; set; }
    public string s1 { get; set; }
    public string s2 { get; set; }
    public string s3 { get; set; }

    public data() { }

    public data(string name, string s1, string s2, string s3)
    {
        this.name = name;
        this.s1 = s1;
        this.s2 = s2;
        this.s3 = s3;
    }
}       

此处您只需要从Azure数据库获取数据。从上面的实现,您可以像学生的滚动数据一样查看。 Student Report

答案 2 :(得分:0)

您必须将第一个列表框用作列并设置ItemSsource属性

另一个ListBox,用于对象的行并设置ItemSsource属性。