/// <summary>
        /// Loads grid layout.
        /// </summary>
        private void _InitDataGridLayout()
        {
            if (_collectionSource == null)
                _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);

            GridStructureInitializer structureInitializer = new GridStructureInitializer(GridSettingsProvider.ZonesGridStructure);
            structureInitializer.BuildGridStructure(_collectionSource, XceedGrid);

            // Load grid layout.
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.ZonesSettingsRepositoryName, _collectionSource.ItemProperties);
            layoutLoader.LoadLayout(XceedGrid);

            _isDataGridLayoutLoaded = true;
        }
        /// <summary>
        /// Prepare data grid control to work.
        /// </summary>
        private void _InitDataGridControl()
        {
            _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);

            // Initialize grid structure.
            GridStructureInitializer structureInitializer = new GridStructureInitializer(GridSettingsProvider.FleetGeocodableGridStructure);
            structureInitializer.BuildGridStructure(_collectionSource, DataGridControl);

            // Find index for first non-Name field to determine it as Address Field.
            int columnIndex = 0;
            for (int i = 0; i < DataGridControl.Columns.Count; i++)
            {
                if (DataGridControl.Columns[i].FieldName != NAME_COLUMN)
                {
                    columnIndex = i;
                    break; // Work done: first non-Name field found.
                }
            }

            // Set special content template to show "Add location" string.
            ColumnBase addressColumn = DataGridControl.Columns[columnIndex];
            addressColumn.CellContentTemplate = (DataTemplate)App.Current.FindResource(ADDRESSLINE_CONTENT_TEMPLATE_NAME);

            CommonHelpers.HidePostalCode2Column(DataGridControl);

            // Load grid layout.
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.FleetLocationsSettingsRepositoryName,
                _collectionSource.ItemProperties);

            layoutLoader.LoadLayout(DataGridControl);
        }
        /// <summary>
        /// Inits data grid layout
        /// </summary>
        protected void _InitDataGridLayout()
        {
            DataGridCollectionViewSource collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);

            Debug.Assert(!string.IsNullOrEmpty(GridStructureName));
            GridStructureInitializer gridStructureInitializer = new GridStructureInitializer(GridStructureName);

            gridStructureInitializer.BuildGridStructure(collectionSource, XceedGrid);

            // load grid layout
            Debug.Assert(!string.IsNullOrEmpty(SettingsRepositoryName));
            GridLayoutLoader vehicleLayoutLoader = new GridLayoutLoader(SettingsRepositoryName, collectionSource.ItemProperties);
            vehicleLayoutLoader.LoadLayout(XceedGrid);
            _isDataGridLayoutLoaded = true;
        }
        protected void _InitDataGridLayout()
        {
            DataGridCollectionViewSource collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);

            GridStructureInitializer structureInitializer = new GridStructureInitializer(GridSettingsProvider.DriversGridStructure);

            structureInitializer.BuildGridStructure(collectionSource, XceedGrid);

            // load grid layout
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.DriversSettingsRepositoryName, collectionSource.ItemProperties);
            layoutLoader.LoadLayout(XceedGrid);

            _isDataGridLayoutLoaded = true;
        }
        /// <summary>
        /// Method inits all xceed data grid controls (sets collection source and columns structure foreach of them).
        /// </summary>
        private void _InitGridControl()
        {
            _isNewItemCreated = false;

            // init grid structure
            if (_collectionSource == null)
                _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(ROUTES_COLLECTION_SOURCE_NAME);

            // Set collection source to null to refresh items collection.
            _collectionSource.Source = null;

            GridStructureInitializer initializer = new GridStructureInitializer(GridSettingsProvider.RoutesGridStructure);
            initializer.BuildGridStructure(_collectionSource, RoutesGrid);

            // init detail structure
            DetailConfiguration orders = (DetailConfiguration)LayoutRoot.FindResource(ROUTES_DETAIL_CONFIGURATION_NAME);
            GridStructureInitializer detailInitializer = new GridStructureInitializer(GridSettingsProvider.StopsGridStructure);
            detailInitializer.BuildDetailStructure(_collectionSource, RoutesGrid, orders);

            // load grid layout
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.RoutesSettingsRepositoryName, _collectionSource.ItemProperties,
                 _collectionSource.DetailDescriptions[0].ItemProperties);
            layoutLoader.LoadLayout(RoutesGrid);
        }
        /// <summary>
        /// Method loads grid layout
        /// </summary>
        private void _InitQuantitiesDataGridLayout()
        {
            DataGridCollectionViewSource collectionSource =
                (DataGridCollectionViewSource)LayoutRoot.FindResource("quantityCollection");

            collectionSource.Source = SymbologyManager.OrderQuantities;

            GridStructureInitializer structureInitializer =
                new GridStructureInitializer("ESRI.ArcLogistics.App.GridHelpers.QuantitySymbologyGridStructure.xaml");

            structureInitializer.BuildGridStructure(collectionSource, QuantityXceedGrid);

            // load grid layout
            GridLayoutLoader layoutLoader = new GridLayoutLoader("QuantitiesGridSettings", collectionSource.ItemProperties);
            layoutLoader.LoadLayout(QuantityXceedGrid);

            QuantityValidationRule valuesValidationRule = new QuantityValidationRule();
            QuantityXceedGrid.Columns[MINVALUE_COLUMN_INDEX].CellValidationRules.Add(valuesValidationRule);
            QuantityXceedGrid.Columns[MAXVALUE_COLUMN_INDEX].CellValidationRules.Add(valuesValidationRule);
        }
        private void _InitDataGridLayout()
        {
            DataGridCollectionViewSource fuelsCollection = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);
            GridStructureInitializer structureInitializer = new GridStructureInitializer(GridSettingsProvider.FuelTypesGridStructure);

            structureInitializer.BuildGridStructure(fuelsCollection, XceedGrid);

            // load grid layout
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.FuelTypesSettingsRepositoryName, fuelsCollection.ItemProperties);
            layoutLoader.LoadLayout(XceedGrid);

            _isDataGridLayoutLoaded = true;
        }
        /// <summary>
        /// Loads grid layout.
        /// </summary>
        private void _InitDataGridLayout()
        {
            if (_collectionSource == null)
            {
                _collectionSource =
                    (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);
            }

            var structureInitializer =
                new GridStructureInitializer(GridSettingsProvider.BarriersGridStructure);
            structureInitializer.BuildGridStructure(_collectionSource, XceedGrid);

            // load grid layout
            var layoutLoader =
                new GridLayoutLoader(GridSettingsProvider.BarriersSettingsRepositoryName,
                                     _collectionSource.ItemProperties);
            layoutLoader.LoadLayout(XceedGrid);

            // Find geometry field and...
            foreach (Column column in XceedGrid.Columns)
            {
                if (column.FieldName == GEOMETRY_FIELD_NAME)
                {
                    // ...set field width to default one,
                    // to let users know about this fields is exists.
                    ColumnBase geometryColumn =
                        XceedGrid.Columns[GEOMETRY_FIELD_NAME];

                    if (geometryColumn.Width == 0)
                        geometryColumn.Width = DEFAULT_COLUMN_WIDTH;

                    break; // Work done.
                }
            }

            _isLayoutLoaded = true;
        }
 /// <summary>
 /// Init grid structure for Grid.
 /// </summary>
 /// <param name="gridStructure">Structure of the grid.</param>
 /// <param name="gridSettingsRepositoryName">Repository with grid settings.</param>
 /// <param name="grid">Grid.</param>
 /// <param name="collectionSource">Grid's collection source.</param>
 private void _InitGridStructure(string gridStructure, string gridSettingsRepositoryName,
     DataGridControlEx grid, DataGridCollectionViewSource collectionSource)
 {
     // Initializing gridstructure and gridlayout.
     GridStructureInitializer structureInitializer = new GridStructureInitializer
         (gridStructure);
     structureInitializer.BuildGridStructure(collectionSource, grid);
     GridLayoutLoader layoutLoader = new GridLayoutLoader(gridSettingsRepositoryName,
         collectionSource.ItemProperties);
     layoutLoader.LoadLayout(grid);
 }
        /// <summary>
        /// React on page loaded.
        /// </summary>
        /// <param name="sender">Ignored.</param>
        /// <param name="e">Ignored.</param>
        private void _FleetSetupWizardUngeocodedOrdersPageLoaded(object sender, RoutedEventArgs e)
        {
            // Init page if not inited yet.
            if (!_inited)
            {
                _isParentFleetWizard = DataKeeper != null;

                // Set row height.
                ContentGrid.RowDefinitions[DATA_GRID_ROW_DEFINITION_INDEX].Height =
                    new System.Windows.GridLength(DEFAULT_ROW_HEIGHT * ROW_COUNT + DataGridControl.Margin.Top
                    + DataGridControl.Margin.Bottom + ROW_COUNT);

                // Create subpages.
                string typeName = (string)App.Current.FindResource(ORDER_RESOURCE_NAME);
                typeName = typeName.ToLower();
                _matchFoundSubPage = new MatchFoundSubPage(typeName);
                _candidatesNotFoundSubPage = new CandidatesNotFoundSubPage(typeName);
                _candidatesFoundSubPage = new CandidatesFoundSubPage(typeName);

                _SetSubPage(null);

                // Init orders collection.
                _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);
                _CreateOrdersLayer();

                // Create and init geocodable page.
                _geocodablePage = new GeocodablePage(typeof(Order), mapCtrl, candidateSelect,
                    controlsGrid, DataGridControl, splitter, _ordersLayer);
                _geocodablePage.MatchFound += new EventHandler(_MatchFound);
                _geocodablePage.CandidatesFound += new EventHandler(_CandidatesFound);
                _geocodablePage.CandidatesNotFound += new EventHandler(_CandidatesNotFound);
                // Datakeeper is not null in fleetwizard.
                _geocodablePage.ParentIsFleetWisard = _isParentFleetWizard;

                mapCtrl.AddTool(new EditingTool(), null);

                _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(COLLECTION_SOURCE_KEY);

                GridStructureInitializer structureInitializer = new GridStructureInitializer(GridSettingsProvider.FleetGeocodableGridStructure);
                structureInitializer.BuildGridStructure(_collectionSource, DataGridControl);

                CommonHelpers.HidePostalCode2Column(DataGridControl);

                // Load grid layout.
                GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.FleetLocationsSettingsRepositoryName,
                    _collectionSource.ItemProperties);
                layoutLoader.LoadLayout(DataGridControl);

                if (!_isParentFleetWizard)
                    _RemoveRedundantElements();

                _inited = true;
            }

            // Get orders collection from datakeeper if it is not null. Otherwise - from current project.
            if (_isParentFleetWizard)
            {
                // Fill ungeocoded orders list.
                _FillUngeocodedOrders(DataKeeper.AddedOrders);
            }
            else
            {
                // Do nothing. Ungeocoded order already set by constructor.
            }

            _collectionSource.Source = _ungeocodedOrders;
            _ordersLayer.Collection = _ungeocodedOrders;

            _selectionBinding.UnregisterAllCollections();
            _selectionBinding.RegisterCollection(DataGridControl);
            _selectionBinding.RegisterCollection(mapCtrl.SelectedItems);

            ButtonFinish.IsEnabled = _IsFinishButtonEnabled(_ungeocodedOrders);
        }
        /// <summary>
        /// Method inits all xceed data grid controls (sets collection source and columns structure foreach of them).
        /// </summary>
        private void _InitGridControl()
        {
            _isNewItemCreated = false;

            _collectionSource = (DataGridCollectionViewSource)LayoutRoot.FindResource(ORDERS_COLLECTION_SOURCE_NAME);
            GridStructureInitializer initializer = new GridStructureInitializer(GridSettingsProvider.OrdersGridStructure);
            initializer.BuildGridStructure(_collectionSource, OrdersGrid);

            // load grid layout
            GridLayoutLoader layoutLoader = new GridLayoutLoader(GridSettingsProvider.OrdersSettingsRepositoryName, _collectionSource.ItemProperties);
            layoutLoader.LoadLayout(OrdersGrid);
        }
        /// <summary>
        /// Method loads layout of Custom order properties data grid.
        /// </summary>
        private void _InitDataGridLayout()
        {
            // Get Data grid collection view source.
            DataGridCollectionViewSource gridCollectionViewSource =
                (DataGridCollectionViewSource)LayoutRoot.FindResource(CUSTOM_ORDER_PROPERTIES_COLLECTION_SOURCE_KEY);

            // Bind collection of custom order properties to Xceed DataGrid.
            gridCollectionViewSource.Source = _customOrderProperties;

            //Grid structure file name.
            string gridStructureFileName = GridSettingsProvider.CustomOrderPropertiesGridStructure;

            // Grid structure initializer.
            GridStructureInitializer gridStructureInitializer =
                new GridStructureInitializer(gridStructureFileName);

            // Build structure of Xceed DataGrid.
            gridStructureInitializer.BuildGridStructure(gridCollectionViewSource, _customOrderPropertiesXceedGrid);

            // Grid settings repository name.
            string gridSettingsRepositoryName =
                GridSettingsProvider.CustomOrderPropertiesSettingsRepositoryName;

            // Grid layout loader.
            GridLayoutLoader gridLayoutLoader =
                new GridLayoutLoader(gridSettingsRepositoryName, gridCollectionViewSource.ItemProperties);

            // Load grid layout.
            gridLayoutLoader.LoadLayout(_customOrderPropertiesXceedGrid);
        }