将图像源从一个窗口传递到另一个窗口

本文关键字:窗口 一个 另一个 图像 | 更新日期: 2023-09-27 18:37:21

我有一个包含 2 个窗口的 WPF 应用程序。

窗口

1 包含一个按钮和一个图像,窗口 2 仅包含一个图像。

当您按下按钮时,您会在窗口 2 上的图像中看到第一个图像的源。虽然两个窗口同时可见。

我在完成这项工作时遇到了麻烦。目前这是我的代码:

namespace WpfApplication3
{
    public partial class MainWindow : Window
    {
        private string msMapImages = AppDomain.CurrentDomain.BaseDirectory + "Images/";
        public MainWindow()
            {
            InitializeComponent();
            Image1.Source = new BitmapImage(new Uri(msMapImages + "image.jpg"));
            Window2 win2 = new Window2();
            win2.Show();
        }
        private void Btnsend_Click(object sender, RoutedEventArgs e)
        {
            Window2 win2 = new Window2();
            win2.Image2.Source = Image1.Source;            
        }
    }
}    
图像在窗口

1 中完美加载,但当我按下按钮时,相同的图像不会出现在窗口 2 中。

将图像源从一个窗口传递到另一个窗口

您可以做的是让事件设置第二个窗口的内容,其中另一个窗口具有绑定到父内容内容的 ImageControl。你的问题让我更觉得你是WPF的新手。在这种情况下,您确实应该在 MVVM 上投入少量时间。它将很快得到回报。

public partial class MainWindow : Window
{
    private string msMapImages = AppDomain.CurrentDomain.BaseDirectory + "Images/";
    private Window win2 { get; set; }
    public MainWindow()
    {
        InitializeComponent();
        Image1.Source = new BitmapImage(new Uri(msMapImages + "image.jpg"));
        win2 = new Window2();
        win2.Show();
    }
    private void Btnsend_Click(object sender, RoutedEventArgs e)
    {
        win2.Content = Image1.Source;            
    }
}

另一个窗口看起来像这样

<Window Name ="Window2">
    <Grid>
        <Image Source={Binding .} />
    </Grid>
</Window2>

在更复杂的情况下,您将使用自定义类(ViewModel)并将其设置为内容,而不是ImageSource,后者将成为ViewModel类的一部分。