How to add Data to a WPF datagrid programatically

后端 未结 3 1497
没有蜡笔的小新
没有蜡笔的小新 2021-01-12 21:54

How can I add data Items to a DataGrid programmatically in WPF which do not have bindings? The DataGrid has 4 columns.

相关标签:
3条回答
  • 2021-01-12 22:40

    .xaml:

    <DataGrid x:Name="dataGrid" Margin="10">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Binding="{Binding Path=Column1}"/>
            <DataGridTextColumn Binding="{Binding Path=Column2}"/>
        </DataGrid.Columns>
    </DataGrid>
    

    .cs:

    public class DataItem
    {
        public bool Column1 { get; set; }
        public string Column2 { get; set; }
    }
    
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DataItem item = new DataItem();
            item.Column1 = true;
            item.Column2 = "test";
            dataGrid.Items.Add(item);
        }
    }
    
    0 讨论(0)
  • 2021-01-12 22:45

    It is not very clear, what You like to do. I guess, You have defined some place where You want to put the DataGrid. For illustration purposes, I created a new WPF project and use the code provided by chridram, who posted the first answer.

    In the following MainWindow.xaml I name the Grid MainGrid to access it in the code behind:

    <Window x:Class="WpfExperiments.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid Name="MainGrid"/>
    </Window>
    

    The DataItem class is not a WPF class, but a custom class created by Yourself:

    public class DataItem
    {
        public string Column1 { get; set; }
        public string Column2 { get; set; }
        public string Column3 { get; set; }
        public string Column4 { get; set; }
    }
    

    To let the DataGrid display data stored in DataItem objects programmatically, You may do the following:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
    
            // Your programmatically created DataGrid is attached to MainGrid here
            var dg = new DataGrid();
            this.MainGrid.Children.Add(dg);
    
            // create four columns here with same names as the DataItem's properties
            for (int i = 1; i <= 4; ++i)
            {
                var column = new DataGridTextColumn();
                column.Header = "Column" + i;
                column.Binding = new Binding("Column" + i);
                dg.Columns.Add(column);
            }
    
            // create and add two lines of fake data to be displayed, here
            dg.Items.Add(new DataItem { Column1 = "a.1", Column2 = "a.2", Column3 = "a.3", Column4 = "a.4" });
            dg.Items.Add(new DataItem { Column1 = "b.1", Column2 = "b.2", Column3 = "b.3", Column4 = "b.4" });
        }
    }
    

    I hope this helps.

    Greetings Jörg

    0 讨论(0)
  • 2021-01-12 22:45

    this a function which i use for retrive data from database string query = "Select * from VWpatientinfo"; DataTable dataTableObject = new DataTable("Table Name");

    obj.DataRetrive(query,dataTableObject);
    DataGridName.ItemsSource = dataTableObject.DefaultView;
    
    0 讨论(0)
提交回复
热议问题