Search code examples
c#uwpdatagrid

binding a list of class to a data grid UWP


I would like to display this object(Node) in a data grid (coordinate is a custom class that literally describes a coordinate) -


 public class Node
    {
        [JsonRequired]
        private bool finished;
        [JsonRequired]
        private readonly string type;
        [JsonRequired]
        private coordinate starting_point = null;
        [JsonRequired]
        private string ID = "";
        [JsonRequired]
        public coordinate Final_Dest = null;
        [JsonRequired]
        public List<coordinate> check_points = new List<coordinate>();
        [JsonRequired]
        private string Metadata = "";
        [JsonRequired]
        private readonly SimpleMarkerSymbol symbol;
        [JsonRequired]
        private int Vmax;
        [JsonRequired]
        public int Amax;
        [JsonRequired]
        private int slope_max;
        [JsonRequired]
        private int slope_min;
        [JsonRequired]
        private int terrein_rank_reject;
        [JsonRequired]
        private int affinity_to_stay_in_group;
        [JsonRequired]
        public int GroupID;
        [JsonRequired]
        public bool coomplitionflag = false;

this is what I tried to do -

 protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            selected_nodes = (comboclass)e.Parameter;
            postioning_index = selected_nodes.Get_index();
            Node[] array_of_nodes = selected_nodes.Get_node_array();
            dataGrid.ItemsSource = Create_list(array_of_nodes);//this function creates a list of nodes          
        }
        public static List<Node> Create_list(Node[] array_nodes)
        {
            var node_coll = new List<Node>();
            for (int i = 0; i < array_nodes.Length; i++)
            {
                node_coll.Add(array_nodes[i]);
            }
            return node_coll;
        }

and for some reason when I execute it only shows the field -type on the data grid


Solution

  • binding a list of class to a data grid UWP

    If you want to bind the Node instance, you need implement the public field's set get method.
    Please edit your class like the following.

    public class Node
    {
        public string Title { get; set; }
        public coordinate Final_Dest { get; set; }   
        .......
    }
    

    For more detail please refer Data binding in depth document.