0

こんにちは友人WindowsPhoneは初めてで、学習用の1つのアプリを開発しています

これは画像のグループを含む単一ページのアプリであり、 Image_tap()に基づいて画像を表示しています。これは完全に機能しています。Application_closeing時に画像の状態(画像のソース)を保存し、Application_launchingの状態を取得したい

MainPage.xaml.csファイル内

 PhoneApplicationService phoneAppservice = PhoneApplicationService.Current;     
 private void Image_Tap(object sender, GestureEventArgs e)
    {
        Image mybutton = (Image)sender;
        image1.Source = mybutton.Source;
        phoneAppservice.State["myValue"] = mybutton.Source;
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        object value;
        if (phoneAppservice.State.TryGetValue("myValue", out value))
        {
            image1.Source = (System.Windows.Media.ImageSource)value;
        }
    }

app.xaml.csファイル内:

 private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        getSource();
    }

 private void Application_Closing(object sender, ClosingEventArgs e)
    {
        saveSource();
    }

private void saveSource()
    {
        PhoneApplicationService phoneAppservice = PhoneApplicationService.Current;
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        settings["myValue"] = phoneAppservice.State["myValue"];
    }

    private void getSource()
    {
        PhoneApplicationService phoneAppservice = PhoneApplicationService.Current;
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        object myValue;
        if(settings.TryGetValue<object>("myValue", out myValue))
        {
            phoneAppservice.State["myValue"] = myValue;
        }
    }

取得中の画像ソースを保存していますが、そのソースを自分の画像に設定できません。私は何かが欠けていると思うか、別の正しい方法を提案してください

前もって感謝します

4

1 に答える 1

0

状態では、画像ソースの代わりに画像名を保存し、その後、表示する画像へのパスを指定しました

MainPage.xaml.csファイルで、複数の画像に対して単一の Image_Tap イベントを使用しました

 private void Image_Tap(object sender, GestureEventArgs e)
    {
        Image mybutton = (Image)sender; // calcifying image based on image taped  
        image1.Source = mybutton.Source; // setting tapped source to image 
        phoneAppservice.State["myValue"] = mybutton.Name; // here saving the name of the image 
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        object value;
        if (phoneAppservice.State.TryGetValue("myValue", out value))
        {
            //retrieving the image name form state and creating new BitMapimage based on this name 
            BitmapImage newImg = new BitmapImage(new Uri("/Gallery;component/Images/"+value+".jpg", UriKind.Relative));
            image1.Source = newImg; 
        }
    }

App.xaml.cs ファイル内

ここでは、application_close 時に分離ストレージに状態を保存し、アプリケーションの起動時に分離ストレージから状態を取得します。

 private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        getSource();
    }

 private void Application_Closing(object sender, ClosingEventArgs e)
    {
        saveSource();
    }

 private void saveSource()
    {
        PhoneApplicationService phoneAppservice = PhoneApplicationService.Current;
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        settings["myValue"] = phoneAppservice.State["myValue"]; //storing the state (image name) to isolated storage

    }

    private void getSource()
    {
        PhoneApplicationService phoneAppservice = PhoneApplicationService.Current;
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        object myValue;
        if(settings.TryGetValue<object>("myValue", out myValue))
        {
            phoneAppservice.State["myValue"] = myValue; // saving the state from isolated storage
        }
    }
于 2012-12-28T07:54:40.297 に答える