如何对齐datagrid行

时间:2013-11-20 13:51:02

标签: c# wpf data-binding datagrid alignment

目前,我有一个绑定到数据集的数据网格。 datagrid只是按递增顺序显示数字为1-90的行。

目前它列出了一个真实长列中的所有行。是否可以让它在每第十行开始一个新列,或者我只需要创建10列9行?

我的XAML

<Window x:Class="Bingo_Game.MainGame"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainGame" Height="500" Width="700">
    <Grid>
        <DataGrid Name="grid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="244" Width="672" AutoGenerateColumns="True" ItemsSource="{Binding}" HeadersVisibility="None" />
        </Grid>
    </Window>

C#

namespace Bingo_Game
{
    /// <summary>
    /// Interaction logic for MainGame.xaml
    /// </summary>
    public partial class MainGame : Window
    {
        public MainGame()
        {
            InitializeComponent();
            DataSet dataSet = new DataSet("myDS");
            DataTable numbersTable = new DataTable("Numbers");
            numbersTable.Columns.Add("Number", typeof(Int16));
            for (int i = 1; i < 91; i++)
            {
                numbersTable.Rows.Add(i);
            }
            dataSet.Tables.Add(numbersTable);
            grid.DataContext = numbersTable.DefaultView;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以这样做:

<DataGrid ItemsSource="{Binding Items}"
          AutoGenerateColumns="False"
          VerticalScrollBarVisibility="Disabled">
    <DataGrid.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical" />
        </ItemsPanelTemplate>
    </DataGrid.ItemsPanel>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding WhatEver}" />
    </DataGrid.Columns>
</DataGrid>

关键是使用WrapPanel作为ItemsPanel并禁用垂直滚动条。

至于在每第十行开始一个新列,你只需要调整DataGrid的高度,直到它包裹在第十行。