2016-11-13 1 views
1

フラクタル画像を生成しようとしていて、アプリが読み込まれたときに画像を表示しようとしています。これは、ボタンをクリックしてウィンドウのサイズを変更するなどのイベントでは機能しますが、アプリを最初に開いたときには機能しません。UWPアプリを開いたときに生成された画像を表示するにはどうすればよいですか?

XAMLは次のとおりです。

<Viewbox Grid.Row="1" x:Name="Scenario4ImageContainer" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" PointerPressed="Scenario4ImageContainer_PointerPressed"> 
    <Image x:Name="Scenario4Image" /> 
</Viewbox> 

コードがある:あなたが有効にするには、Windows用

private async void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     generator.Width = (int)imageColumn.ActualWidth; ; 
     generator.Height = (int)imageRow.ActualHeight; ; 
     generator.InitMap(); 
     generator.Generate(); 

     fractalBitmap = await colorer.Color(generator.Map); 

     Scenario4Image.Source = fractalBitmap; 
     fractalBitmap.Invalidate(); 

     //This works... 
     //Scenario4Image.Source = new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")); 
    } 
+1

注:ImageboxをViewboxに配置する必要はありません。 ImageコントロールのStretchプロパティを適切に設定するだけです。それ以外に、 'imageColumn.ActualWidth'と' imageRow.ActualHeight'が0より大きいかどうかチェックしましたか? – Clemens

+0

私はチェックして、幅と高さが明らかにゼロよりも大きいです。それらは正しい値です。 – MichaelG

答えて

0

待つのですか?あなたはTaskCompletionSourceを使用して、App.xaml.csファイル内のメソッドを公開することができ :

private static TaskCompletionSource _waitActivation =new TaskCompletionSource<bool>(); 

public static Task WaitWindowActivationAsync(){ 
    return _waitActivation.Task; 
} 

private void OnLaunched(...){ 

... 

Windows.Current.Activate(); 

_waitActivation.TrySetResult(true); 

} 

は、その後、あなたのハンドラの中で、あなたはそれを呼び出す:

private async void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     await App.WaitWindowActivationAsync(); 
     ... 
    } 

ます。また、タスクに待機を追加することができます。産出(); :

private async void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     await Task.Yield(); 
     await App.WaitWindowActivationAsync(); 
     ... 
    } 
+0

は私がTaskCompletionSource 'プライベート静的TaskCompletionSource _waitActivation =新しいTaskCompletionSource ()にタイプを追加することにより、App.xaml.csにコードを追加することができました;' しかしPAGE_LOADED方法でそれを呼び出すことができませんでした。そこにApp変数へのアクセス権がありません。 UWPアプリの新しいバージョンで何か変わったのだろうか? – MichaelG

+0

ちょっと、私のコードで間違って申し訳ありません:WaitWindowActivationAsyncメソッドを静的にして、ロードされたイベントハンドラから呼び出します。それが動作するかどうか教えてください。 –

関連する問題