为什么我的 DataGrid 不显示列表中的值?

Why is my DataGrid not showing the values from my list?

所以我有 2 DataGrids(因为我还没有找到更好的方法来按照我想要的方式去做)并且我在 .cs 中有以下代码:

public MainWindow()
{
    InitializeComponent();

    List<User> users = new List<User>();
    users.Add(new User() { Id = 1, Name = "John Doe", Birthday = new DateTime(1971, 7, 23) });
    users.Add(new User() { Id = 2, Name = "Jane Doe", Birthday = new DateTime(1974, 1, 17) });
    users.Add(new User() { Id = 3, Name = "Sammy Doe", Birthday = new DateTime(1991, 9, 2) });

    gridd.ItemsSource = users;

    string[] items = new string[]
    {
        "Asdf",
        "qwer",
        "sdfg",
        "wert",
    };
}

public class User
{
    public int Id { get; set; }

    public string Name { get; set; }

    public DateTime Birthday { get; set; }
}

我只想在我的 DataGrid 中输出此数据用于测试目的,但由于某些原因它不起作用。这是我的 xaml 代码:

<Grid>

    <DataGrid HorizontalAlignment="Left" Height="298.638" Margin="93.195,102.655,0,0" 
              VerticalAlignment="Top" Width="507.242">

        <DataGrid.Resources>
            <!--Design kopfzeile-->
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="Background" Value="Gray"/>
                <Setter Property="Foreground" Value="White"/>
                <Setter Property="BorderThickness" Value="0,0,1,0" />
                <Setter Property="BorderBrush" Value="White"/>
                <Setter Property="Padding" Value="5 0 0 0"/>
            </Style>

            <!--Deaktivieren Des rowheader-->
            <Style TargetType="{x:Type DataGridRowHeader}">
                <Setter Property="Background" Value="Transparent"/>
            </Style>

        </DataGrid.Resources>
        <DataGrid.Columns>
            <DataGridTextColumn Width="*" Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Artikelnummer" FontSize="10" IsReadOnly="True"/>
            <DataGridTextColumn Width="*"  Binding="{x:Null}" ClipboardContentBinding="{x:Null}" FontSize="10" Header="Artikelnummer" IsReadOnly="True"/>
            <DataGridTextColumn Width="*"  Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Matchcode" IsReadOnly="True"/>
            <DataGridTextColumn Width="*"  Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Hersteller" IsReadOnly="True"/>
            <DataGridCheckBoxColumn Width="*"  Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="CheckBox" />
        </DataGrid.Columns>
    </DataGrid>

    <!--!!!!!!Haupt DataGrid !!!!!-->
    <DataGrid AutoGenerateColumns="False" Height="282.293" HorizontalAlignment="Left" Margin="93.195,119,0,0" Name="gridd" VerticalAlignment="Top" Width="507.242" >
        <DataGrid.Columns >
            <DataGridTemplateColumn Width="*">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Width="88.048">
                            <TextBox Name="IDSearcBox"  Width="88"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="*">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="NameSearchBox" Width="88"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="*">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="NameSearchBox" Width="88"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="*">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="NameSearchBox" Width="88"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Width="*">
                <DataGridTemplateColumn.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox Name="NameSearchBox" Width="88"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.HeaderTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

</Grid>

它显示了我在列表中保存的行数:

但它没有显示它的值,尤其是因为它的格式很奇怪。如果有人在这里看到我的错误,我会很高兴。

您使用了 DataGridTemplateColumn 但您没有提供用于显示和编辑的数据模板。

<DataGridTemplateColumn Width="*">
    <DataGridTemplateColumn.HeaderTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBox Name="NameSearchBox" Width="88"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.HeaderTemplate>
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Name}"/>
      </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
   <DataGridTemplateColumn.CellEditingTemplate>
      <DataTemplate>
         <TextBox Text="{Binding Name}"/>
      </DataTemplate>
   </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

或者,只需使用已经内置的列类型,如 DataGridTextColumn。如果您不需要自定义数据模板来显示您的数据,则不需要模板列。

<DataGridTextColumn Width="*" Binding="{Binding Id}">
   <DataGridTextColumn.HeaderTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal" Width="88.048">
            <TextBox Name="IDSearcBox"  Width="88"/>
         </StackPanel>
      </DataTemplate>
   </DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>