2

次のようなインターフェイスがある場合:

public interface IImageService
{
    ObservableCollection<PictureModel> RefreshSavedImages();

    void PhotoChooserWithCameraServiceShow();
}

そして彼の実装は次のとおりです。

public class ImageService: IImageService
{
    public ObservableCollection<PictureModel> RefreshSavedImages()
    {
        // Refreash images from library
    }

    public WriteableBitmap StreamToWriteableBitmap(Stream imageStream)
    {
        WriteableBitmap image = new WriteableBitmap(1024, 768);
        image.SetSource(imageStream);
        imageStream.Dispose();
        return image;
    }

    public void PhotoChooserWithCameraServiceShow()
    {
        // PhotoChooserTask get source of image.
    }
}

ViewModel に実装がある場合:

private readonly IImageService imageService;
public MainViewModel(IImageService imageService)
    {
        this.imageService = imageService;
    }
private void MethodA()
    {
        // Choose Photo, I edited it and after saved it.
        imageService.PhotoChooserWithCameraServiceShow();
        // Refreash the library and Bind it in my ItemSource from my ListBox.
        PictureList = imageService.RefreshSavedImages();
    }

私の問題は、最初にこのメソッドを終了する必要があることです: imageService.PhotoChooserWithCameraServiceShow(); その後、imageService.RefreshSavedImages(); に進みます。

問題は、私のプログラムが行うことは、最初のプログラムが完了する前に 2 番目のプログラムを実行することです。

この問題を引き起こす可能性があると思われる問題:

  1. ViewModel から、ロジックなしで NavigationService を呼び出して戻る。だからできない:

    NavigationService ナビゲーション = 新しい NavigationService(); navigation.NavigateTo(new Uri("/Views/SecondPage.xaml", UriKind.Relative));

PhotoChooserWithCameraServiceShow は、Cimbalino Windows Phone Toolkitから取得されます。

みなさん、よろしくお願いします!

4

1 に答える 1