如何从文本框wpf在数据网格中创建指定数量的列

How to create a specified number of coloumns in a data grid from text box wpf

我希望能够在文本框中写入一个数字(最好是 1-10)并在数据网格中为其创建一定数量的列。我怎么能那样做?这是我到目前为止得到的:

<DataGrid x:Name="Tasks" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="345" Margin="244,38,0,0" VerticalAlignment="Top" Width="528" Background="Transparent" HorizontalGridLinesBrush="Transparent" VerticalGridLinesBrush="Transparent" RowBackground="#202020" AlternatingRowBackground="#262626">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="Words" Binding="{Binding Keywords}"/>
            <DataGridTextColumn Header="Colour" Binding="{Binding Colour}"/>
            <DataGridTextColumn Header="Size" Binding="{Binding Size}"/>
        </DataGrid.Columns>
    </DataGrid>

这就是我的网格,只需单击一个按钮即可从一系列文本框中读取数据。然后我有了我想要的文本框,它将能够修改数据网格创建的列数:

<TextBox x:Name="noColoums" Height="26" Margin="88,244,663.6,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>

我不知道如何制作它,所以任何帮助将不胜感激!

这应该让您在正确的轨道上开始。

首先您需要捕获输入到 TextBox 中的号码。让我们在此示例中使用 LostFocus 事件。

//Add LostFocuse Event Handler
//Your other properties have been removed for the sake of example brevity
<TextBox x:Name="noColoums" LostFocus="TextBox_LostFocus"/>

好的,现在让我们从文本框中提取数字,并为您的数据网格动态创建列。

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    int columns;

    //Determine if TextBox text is number. If so, add columns
    if (int.TryParse(noColumns.Text, out columns))
    {
         for(int x=1; x<=columns; x++)
         {
              //Add column with header.
              Tasks.Columns.Add(new DataGridTextColumn() { Header = string.Format("COL: {0}", x) });
         }
    }
}