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

问题描述 投票:0回答:1

我希望能够在文本框中写入一个数字(最好仅从 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="noColumns" Height="26" Margin="88,244,663.6,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>

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

wpf datagrid textbox
1个回答
0
投票

这应该会让您走上正确的轨道。

首先您需要捕获输入到

TextBox
中的数字。让我们在本例中使用
LostFocus
事件。

//Add LostFocuse Event Handler
//Your other properties have been removed for the sake of example brevity
<TextBox x:Name="noColumns" 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) });
         }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.