为什么我的WPF数据网格没有被填充?

本文关键字:填充 网格 我的 WPF 数据 数据网 为什么 | 更新日期: 2023-09-27 18:13:47

我在这里遵循教程:http://www.wpf-tutorial.com/datagrid-control/introduction/

我设置了DataGrid,用数据源创建了一个集合,并将DataGrid的ItemsSource设置为该集合。运行程序后,似乎行数是正确的,但所有的行都是空白的。我需要改变什么才能正确显示数据?

xaml:

<Window x:Class="Task_Timer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Task Timer" Height="284" Width="598" MinWidth="500" MinHeight="400">
    <Grid Margin="10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <DataGrid x:Name="ProcessBox" Margin="0" SelectionMode="Extended" ScrollViewer.HorizontalScrollBarVisibility="Hidden" GridLinesVisibility="None" AutoGenerateColumns="False" IsManipulationEnabled="True" IsReadOnly="True" HorizontalAlignment="Left" Width="285">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Process" Binding="{Binding ProcessName}" />
                <DataGridTextColumn Header="Memory" Binding="{Binding Memory}" />
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Button" Grid.Column="1" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>
c#:

namespace Task_Timer
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            List<ProcessContainer> items = new List<ProcessContainer>();
            foreach (Process process in Process.GetProcesses())
            {
                items.Add(new ProcessContainer(process.ProcessName, 10));
            }
            ProcessBox.ItemsSource = items;
        }
    }
    public class ProcessContainer
    {
        public string ProcessName;
        public int Memory;
        public ProcessContainer(string name, int memory)
        {
            ProcessName = name;
            Memory = memory;
        }
    }
}

为什么我的WPF数据网格没有被填充?

您缺少getset。您需要在类ProcessContainer中设置属性的值

像这样修改

public class ProcessContainer
        {
            public string ProcessName {get;set;}
            public int Memory { get; set; }
            public ProcessContainer(string name, int memory)
            {
                ProcessName = name;
                Memory = memory;
            }
        }

按如下方式更改ProcessContainer类

 public class ProcessContainer
    {
        private string process;
        public string ProcessName
        {
            get { return process; }
            set { process = value; }
        }
        private int memory;
        public int Memory
        {
            get { return memory; }
            set { memory = value; }
        }

        public ProcessContainer(string name, int memory)
        {
            ProcessName = name;
            Memory = memory;
        }
    }