将图像源从一个 window 传递到另一个

Passing an image source from one window to another

我有一个 WPF 应用程序,其中包含 2 windows。

Window1包含一个按钮和一张图片,window2只包含一张图片。

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

我无法完成这项工作。 目前这是我的代码:

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

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

您可以做的是让事件设置第二个 window 的内容,其中另一个 window 将 ImageControl 绑定到父 Content 的内容。 你的问题让我更多的感觉是你对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 看起来像这样

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

应该是这样。在更复杂的情况下,您将使用自定义 class (ViewModel) 并将其设置为内容而不是 ImageSource,后者将成为 ViewModel class.

的一部分