 <p>You could easily put the lazy load logic within the viewmodel that holds your <code>PImage1</code> property. Your property would need to return an ImageSource. </p> <pre><code>private ImageSource _source; public ImageSource PImage1 { get { if (_source == null) { using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { if (storage.FileExists("Image.jpg")) { var bitmap = new BitmapImage(); bitmap.SetSource(storage.OpenFile("Image.jpg", FileMode.Open)); _source = bitmap; return _source; } } LoadImage(); } return _source; } set { _source = value; OnPropertyChanged("PImage1"); } } </code></pre> <p>Inside the LoadImage method, you'll make a request to get your image, save it to local storage, and then set the PImage1 property. Make sure to set the property on the UI thread</p> <pre><code>private void LoadImage() { // make a request to get the image. // Use your flavor of choice, WebRequest, HttpClient, WebClient Stream image = GetImageFromMyFavoriteHttp; using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) { using (var file = storage.CreateFile("Image.jpg")) { image.CopyTo(file); } } Deployment.Current.Dispatcher.BeginInvoke(() =&gt; { var bitmap = new BitmapImage(); bitmap.SetSource(image); Image = bitmap; }); } </code></pre>