簡體   English   中英

C# WPF 數據網格 | 只有一行沒有內容

[英]C# WPF DataGrid | Only one Row without Content

我對 Datagrid 進行了一些嘗試,在第一個程序中我創建了一個 DataGrid,它工作得很好,但后來我嘗試了另一個項目,重做它並在沒有指南的情況下學習它。

我不知道其他項目有什么不同,但這次它只顯示 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>

您忘記設置UserList

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM