2017-03-01 27 views
0

私は2つのウィンドウ:MainMenuとPictureWindowで構成される単純なwpfアプリケーションを持っています。私はPictureBoxWindowsFormsHostを持ってPictureWindowでc# - wpf - ウィンドウ切り替えの間の画像のリフレッシュ

private void btnOpenPicWindow_Click(object sender, RoutedEventArgs e) 
{ 
    var picWindow = new PictureWindow(); 
    Application.Current.MainWindow = picWindow; 
    Close(); 
    picWindow.Show(); 
} 

:メインメニューで 私はピクチャーウィンドウを開き、クリックイベントでボタンを一つ持っています。 PictureWindowでは、別のアプリから送信する画像を受信し、PictureBoxに表示します。私はその後、PictureWindowをメインウィンドウを開き、とき

private void btnBack_Click(object sender, RoutedEventArgs e) 
{ 
    var mMenu = new MainWindow(); 
    System.Windows.Application.Current.MainWindow = mMenu; 
    Close(); 
    mMenu.Show(); 
} 

すべてはokです:PictureWindowも、このようにメインメニューに戻りクリックイベントでボタンがあります。問題は、私がPictureWindowからMainMenuに戻り、再びPictureWindowに戻ったときに、私がPictureBoxに画像を送ったときに更新されないことです。私はdebbugingの間に私がそれを見るイメージを受け取るが、私のPictureBoxは空である。

答えて

0

MainWindowのボタンをクリックするたびに、画像でウィンドウを再初期化してください。

画像を非同期または同期方式でロードする場合は、をLoadに変更できます。

WPF PictureWindow:

<Window x:Class="WpfApplication2.PictureWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="PictureWindow" Height="300" Width="300" 
     xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" Loaded="Window_Loaded"> 
    <Grid> 
     <WindowsFormsHost Height="100" HorizontalAlignment="Left" Margin="12,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="200"> 
      <wf:PictureBox x:Name="pbImage" SizeMode="AutoSize"></wf:PictureBox> 
     </WindowsFormsHost> 
    </Grid> 
</Window> 

C#PictureWindow:

public partial class PictureWindow : Window 
{ 
    public string imgsrc = string.Empty; 
    public PictureWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     pbImage.LoadAsync(imgsrc); 
    } 
} 

C#メインウィンドウ:

public partial class MainWindow : Window 
{ 
    PictureWindow window; 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    window = new PictureWindow(); 
    window.imgsrc = textBox1.Text.Trim(); //Here you update your "Source" for your image. 
    window.Show(); 
} 
関連する問題