表头与标题

时间:2013-01-05 23:10:18

标签: c# xaml windows-runtime winrt-xaml

我想在Windows RT中使用标题

创建一个简单的表

我正在考虑像

这样的事情
<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto"/>
      <ColumnDefinition Width="10" />
      <ColumnDefinition Width="Auto"/>
   </Grid.ColumnDefinitions>
   <TextBlock Grid.Row="0" Grid.Column="0" Text="Measurement" />
   <TextBlock Grid.Row="1" Grid.Column="2" Text="Value" />
</Grid>

但我不想为每个对象创建一个RowDefinition,并循环遍历每个对象以插入属性

我可以以任何方式这样做,还是应该使用网格创建它?

2 个答案:

答案 0 :(得分:1)

为避免必须遍历数据行,您应该使用ItemsControl(或ListView,如果您需要所选行的概念)。不幸的是,在WinRT ColumnDefinition中不包含SharedSizeGroup属性,允许您在Grid中使用ItemTemplate并在项目之间共享列大小here

作为替代方案,您可以使用具有固定控件宽度的水平StackPanel

<StackPanel Orientation="Horizontal">
    <TextBlock Text="Measurement" Width="100" />
    <TextBlock Text="Value" Width="200" />
</StackPanel>
<ItemsControl ItemsSource="{Binding Measurements}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Measurement}" Width="100" />
                <TextBlock Text="{Binding Value}" Width="200" />
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

在上面的绑定中,我假设您的数据结构如下:

public class MeasurementItem
{
    public string Measurement { get; set; }
    public int Value { get; set; }
}

public class ViewModel
{
    public List<MeasurementItem> Measurements { get; set; }
}

由于固定宽度需要在标题和行模板中相同,因此缺点是灵活性较差。不过,我认为它应该足够了 - 你真的不想开始在代码中创建UIElements。

答案 1 :(得分:0)

您想在网格内显示数据吗? 网格通常用于安排控件。如果要在其中显示数据以及标题,则可能需要使用DataGrid。

如需样品,请查看http://wpftutorial.net/DataGrid.html