public ShippingDataWindow(Window callingWindow, OrderDataRecord record, Func <IDataRecord, bool> closeCallback)
        {
            InitializeComponent();

            onClose = closeCallback; //Set callback

            Owner = callingWindow;   //Set owner

            //Load fields
            ShipCity.Text   = record.Get("City");
            ShipState.Text  = record.Get("State");
            ShipStreet.Text = record.Get("Street");
            ShipZip.Text    = record.Get("Zip");

            finalRecord = record;

            //Set on clicks
            ShipButtonSave.Click += (s, a) =>
            {
                finalRecord.SetField("City", ShipCity.Text);
                finalRecord.SetField("State", ShipState.Text);
                finalRecord.SetField("Street", ShipStreet.Text);
                finalRecord.SetField("Zip", ShipZip.Text);
                Close();
            };
        }
        /// <summary>
        /// This will only take OrderDataRecords due to complexity.
        /// </summary>
        /// <param name="record"></param>
        public OrderInformationWindow(OrderDataRecord record, Func <OrderDataRecord, bool> callback)
        {
            InitializeComponent();

            finalRecord = record;

            closeCallback = callback;
            //Load Item list
            var list = record.GetLineItems();
            //Will show results in this
            var resultContainer = OrderLineList;
            //The actual container
            var resultGrid = new GridView();

            //Create columns, and bind them
            var nameCol = new GridViewColumn();

            //This sets the field this column will get data from
            nameCol.DisplayMemberBinding = new Binding("ItemName");
            nameCol.Header = "Item";

            var quantityCol = new GridViewColumn();

            //This sets the field this column will get data from
            quantityCol.DisplayMemberBinding = new Binding("Quantity");
            quantityCol.Header = "Quantity";

            var priceCol = new GridViewColumn();

            //This sets the field this column will get data from
            priceCol.DisplayMemberBinding = new Binding("ItemPrice");
            priceCol.Header = "Item Price";

            var returnCol = new GridViewColumn();

            //This sets the field this column will get data from
            returnCol.DisplayMemberBinding = new Binding("IsReturned");
            returnCol.Header = "Returned?";



            //Add all binded columns to grid view.
            resultGrid.Columns.Add(nameCol);
            resultGrid.Columns.Add(quantityCol);
            resultGrid.Columns.Add(priceCol);
            resultGrid.Columns.Add(returnCol);

            //fill the data.
            foreach (var item in list)
            {
                resultContainer.Items.Add(item);
            }

            //Add gridView to list
            resultContainer.View = resultGrid;


            //Set onclick
            resultContainer.MouseDoubleClick += (sender, args) =>
            {
                var item = (LineItem)resultContainer.SelectedItem;
                //Open a connection to the DB
                var connection = ConnectionManager.OpenLast();
                try
                {
                    //Set selected item data
                    OrderItemDesc.Text = item.GetField("Description");
                    OrderItemID.Text   = item.GetField("ItemID");
                }
                catch (NullReferenceException nre)
                {
                    //The system will throw a nre if the user clicks on the header, issue that should be addressed
                }
            };
        }