如何从文本框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) });
}
}
}
我希望能够在文本框中写入一个数字(最好是 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) });
}
}
}