Your post stated you knew how to download TPK's, and I shared code for the geodatabase. Are you just asking how to get the extent?
Using ExportTileCacheParameters, it would be something like, where the mapExtent variable is:
EsriMapView.VisibleArea.Extent
//Create the service for the export
var tileService = new ArcGISTiledLayer(new Uri (StorageManager.CurrentBasemapUrl));
if (tileService.LoadStatus != Esri.ArcGISRuntime.LoadStatus.Loaded)
await tileService.LoadAsync ();
//Create the export task
_exportTileTask = await ExportTileCacheTask.CreateAsync(new Uri (StorageManager.CurrentBasemapUrl));
//Create the export parameters
_tileParameters = await _exportTileTask.CreateDefaultExportTileCacheParametersAsync (mapExtent,
tileService.TileInfo.LevelsOfDetail.ToArray()[0].Scale,
tileService.TileInfo.LevelsOfDetail.ToArray()[maxLOD].Scale);