private async void LoadFile(DxfDocument document) { // Map to LayerModel List <LayerViewModel> validLayers = document .CreateLayerModels() .Where(x => x.Polylines.Any()) .Select(x => new LayerViewModel() { Name = x.Name, Walls = new ObservableCollection <WallViewModel>(x.Polylines .Select(y => new WallViewModel() { Height = App.WallHeight, Points = y.Points })) }) .ToList(); // Bad scenario if (validLayers.Count < 1) { MessageDialog dialog = new MessageDialog(title: "Wrong file format...", content: "There are no suitable layers in the loading file.\n" + "See Help > Supported layers."); await dialog.ShowAsync(); return; } // Good scenario List <LayerViewModel> selectedLayers; if (validLayers.Count < 2) { selectedLayers = new List <LayerViewModel> { validLayers.First() }; } else { // Ask user about layer var dialog = new ChooseLayerDialog(validLayers .Select(ChooseLayerViewModel.Create)); await dialog.ShowAsync(); if (dialog.Result == ChooseLayerDialogResult.Canceled) { return; } // Loading to scene selectedLayers = dialog.SelectedLayers; } List <WallViewModel> walls = selectedLayers .SelectMany(x => x.Walls) .ToList(); ViewModel.Walls.Clear(); ViewModel.Signalings.Clear(); ViewModel.Walls.AddRange(walls); Sandbox.FocusCameraOn(ViewModel.Walls.Bounds()); }