public BingMapsConfigViewModel()
        {
            bingMapsKey        = string.Empty;
            mapType            = BingMapsMapType.Road;
            showMapTypeOptions = true;
            var baseMapDataPlugin = GisEditor.DataRepositoryManager.GetPlugins().OfType <BaseMapDataRepositoryPlugin>().FirstOrDefault();

            if (baseMapDataPlugin != null &&
                (bingMapDataRepositoryItem = baseMapDataPlugin.RootDataRepositoryItem.Children.OfType <BingMapDataRepositoryItem>().FirstOrDefault()) != null)
            {
                bingMapsKey = bingMapDataRepositoryItem.BingMapsKey;
                mapType     = bingMapDataRepositoryItem.BingMapType;
                if (String.IsNullOrEmpty(bingMapsKey))
                {
                    byte[] keyBuffer = Convert.FromBase64String("QWk5SDVWVnQtZTI2VEdaRFgtakstVUVqOW5KeU9BdHF1OVAyalRURHdETXJTNS1CTUlzZVpxY01BVGpnSmtBeg==");
                    bingMapsKey = Encoding.UTF8.GetString(keyBuffer);
                }
            }
        }
        private static bool Validate(string BingMapsKey, BingMapsMapType mapType)
        {
            bool   result = false;
            string loginServiceTemplate = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/{0}?&incl=ImageryProviders&o=xml&key={1}";

            try
            {
                string loginServiceUri = string.Format(CultureInfo.InvariantCulture
                                                       , loginServiceTemplate, mapType, BingMapsKey);

                WebRequest  request  = WebRequest.Create(loginServiceUri);
                WebResponse response = request.GetResponse();
                Stream      stream   = response.GetResponseStream();

                if (stream != null)
                {
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(stream);
                    XmlNamespaceManager nsmgr = new XmlNamespaceManager(xDoc.NameTable);
                    nsmgr.AddNamespace("bing", "http://schemas.microsoft.com/search/local/ws/rest/v1");

                    XmlNode     root              = xDoc.SelectSingleNode("bing:Response", nsmgr);
                    XmlNode     imageUrlElement   = root.SelectSingleNode("bing:ResourceSets/bing:ResourceSet/bing:Resources/bing:ImageryMetadata/bing:ImageUrl", nsmgr);
                    XmlNodeList subdomainsElement = root.SelectNodes("bing:ResourceSets/bing:ResourceSet/bing:Resources/bing:ImageryMetadata/bing:ImageUrlSubdomains/bing:string", nsmgr);
                    if (imageUrlElement != null && subdomainsElement != null)
                    {
                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

            return(result);
        }
        private static bool Validate(string BingMapsKey, BingMapsMapType mapType)
        {
            bool result = false;
            string loginServiceTemplate = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/{0}?&incl=ImageryProviders&o=xml&key={1}";

            try
            {
                string loginServiceUri = string.Format(CultureInfo.InvariantCulture
                              , loginServiceTemplate, mapType, BingMapsKey);

                WebRequest request = WebRequest.Create(loginServiceUri);
                WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();

                if (stream != null)
                {
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(stream);
                    XmlNamespaceManager nsmgr = new XmlNamespaceManager(xDoc.NameTable);
                    nsmgr.AddNamespace("bing", "http://schemas.microsoft.com/search/local/ws/rest/v1");

                    XmlNode root = xDoc.SelectSingleNode("bing:Response", nsmgr);
                    XmlNode imageUrlElement = root.SelectSingleNode("bing:ResourceSets/bing:ResourceSet/bing:Resources/bing:ImageryMetadata/bing:ImageUrl", nsmgr);
                    XmlNodeList subdomainsElement = root.SelectNodes("bing:ResourceSets/bing:ResourceSet/bing:Resources/bing:ImageryMetadata/bing:ImageUrlSubdomains/bing:string", nsmgr);
                    if (imageUrlElement != null && subdomainsElement != null)
                    {
                        result = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

            return result;
        }