C#WPF DataGrid |只有一行没有内容

本文关键字:一行 DataGrid C#WPF | 更新日期: 2023-09-27 17:59:23

我尝试了一点数据网格,在第一个程序中,我创建了一个数据网格,效果很好,但后来我尝试了另一个项目,在没有指南的情况下重做并学习它。

我不知道与其他项目有什么不同,但这次它只显示了1行,点击添加后,没有内容。

我做错了什么?有没有一般的改进?

感谢您使用本线程中的时间。

C#主类:

    public List<User> UserList = new List<User>();
    public MainWindow()
    {
        InitializeComponent();
    }
    private void PressedEnter(object sender, KeyEventArgs e)
    {
        TextBox CurrentTextbox = (TextBox)sender;
        if (e.Key == Key.Enter)
        {
            switch (CurrentTextbox.Name)
            {
                case "EnterName":
                    EnterBirthday.Focus();
                    break;
                case "EnterBirthday":
                    EnterEmail.Focus();
                    break;
                case "EnterEmail":
                    MainDataGrid.ItemsSource = null;
                    MainDataGrid.ItemsSource = UserList;
                    break;
            }
        }
    }
    private void AddButton_OnClick(object sender, MouseButtonEventArgs e)
    {
        MainDataGrid.ItemsSource = null;
        MainDataGrid.ItemsSource = UserList;
    }
    private List<User> AddItemToGrid()
    {
        string[] NameArray = EnterName.Text.Split(' ');
        string[] BirthdayArray = EnterBirthday.Text.Split('.');
        UserList.Add(new User()
        {
            FirstName = NameArray[0],
            LastName = NameArray[1],
            Birthday = new DateTime(Convert.ToInt16(BirthdayArray[2]), Convert.ToInt16(BirthdayArray[1]), Convert.ToInt16(BirthdayArray[0])),
            Email = EnterEmail.Text
        });
        return UserList;
    }

C#用户类

public class User
{
    public string FirstName
    {
        get;
        set;
    }
    public string LastName
    {
        get;
        set;
    }
    public DateTime Birthday
    {
        get;
        set;
    }
    public string Email
    {
        get;
        set;
    }
}

XAML

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
        <RowDefinition Height="287*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="235" />
        <ColumnDefinition Width="337*" />
    </Grid.ColumnDefinitions>
    <Label Grid.ColumnSpan="2"
        HorizontalContentAlignment="Center"
        VerticalContentAlignment="Center"
        Background="#2196f3"
        BorderBrush="Transparent"
        Content="DataGrid"
        FontFamily="Roboto"
        FontSize="15"
        FontWeight="Bold"
        Foreground="White" />
    <StackPanel Grid.Row="1" Grid.Column="0">
        <Label Height="25"
            Margin="10,10,10,0"
            VerticalAlignment="Top"
            HorizontalContentAlignment="Center"
            Background="#2196f3"
            BorderBrush="Transparent"
            Content="Name"
            FontFamily="Roboto"
            FontSize="13"
            FontWeight="Bold"
            Foreground="White" />
        <TextBox Name="EnterName"
                Height="25"
                Margin="10,5,10,0"
                VerticalAlignment="Top"
                HorizontalContentAlignment="Left"
                VerticalContentAlignment="Center"
                BorderBrush="#2196f3"
                FontFamily="Roboto"
                Foreground="#2196f3"
                KeyDown="PressedEnter" />
        <Label Height="25"
            Margin="10,10,10,0"
            VerticalAlignment="Top"
            HorizontalContentAlignment="Center"
            Background="#2196f3"
            BorderBrush="Transparent"
            Content="Birthday (DD.MM.YYYY)"
            FontFamily="Roboto"
            FontSize="13"
            FontWeight="Bold"
            Foreground="White" />
        <TextBox Name="EnterBirthday"
                Height="25"
                Margin="10,5,10,0"
                VerticalAlignment="Top"
                HorizontalContentAlignment="Left"
                VerticalContentAlignment="Center"
                BorderBrush="#2196f3"
                FontFamily="Roboto"
                Foreground="#2196f3"
                KeyDown="PressedEnter"
                MaxLength="10" />
        <Label Height="25"
            Margin="10,10,10,0"
            VerticalAlignment="Top"
            HorizontalContentAlignment="Center"
            Background="#2196f3"
            BorderBrush="Transparent"
            Content="E-Mail"
            FontFamily="Roboto"
            FontSize="13"
            FontWeight="Bold"
            Foreground="White" />
        <TextBox Name="EnterEmail"
                Height="25"
                Margin="10,5,10,0"
                VerticalAlignment="Top"
                HorizontalContentAlignment="Left"
                VerticalContentAlignment="Center"
                BorderBrush="#2196f3"
                FontFamily="Roboto"
                Foreground="#2196f3"
                KeyDown="PressedEnter" />
        <Label Name="AddButton"
            Height="68"
            Margin="10,10,10,10"
            VerticalAlignment="Stretch"
            HorizontalContentAlignment="Center"
            VerticalContentAlignment="Center"
            Background="#2196f3"
            BorderBrush="#2196f3"
            Content="ADD"
            FontFamily="Roboto"
            FontSize="30"
            FontWeight="Bold"
            Foreground="White"
            MouseLeftButtonDown="AddButton_OnClick" />
    </StackPanel>
    <DataGrid Name="MainDataGrid"
            Grid.Row="1"
            Grid.Column="1" />
</Grid>

C#WPF DataGrid |只有一行没有内容

您忘记设置UserList:

    private void AddButton_OnClick(object sender, MouseButtonEventArgs e)
    {
        MainDataGrid.ItemsSource = null;
        UserList = AddItemToGrid();
        MainDataGrid.ItemsSource = UserList;
    }