簡體   English   中英

窗口切換之間刷新圖片

[英]c# - wpf - refresh picture between window switching

我有一個簡單的wpf應用程序,其中包含2個窗口:MainMenu和PictureWindow。 在MainMenu中,我有一個帶有單擊事件的按鈕,可打開圖片窗口:

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

在PictureWindow中,我具有帶有PictureBox WindowsFormsHost 在PictureWindow中,我收到從另一個應用程序發送的圖像,並將其顯示在PictureBox PictureWindow還有一個帶有單擊事件的按鈕,它可以像下面這樣返回到MainMenu:

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

當我打開MainWindow然后是PictureWindow時,一切正常。 問題是當我從PictureWindow返回MainMenu,然后再次回到PictureWindow,並且如果我將圖片發送到PictureBox它不會刷新。 我收到圖像是因為在調試過程中看到了它,但是我的PictureBox是空白的。

每次單擊MainWindow上的按鈕時,都應嘗試用圖片重新初始化窗口。

如果要使用異步或同步方法加載圖像,可以更改LoadAsync for 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#MainWindow:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM