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

时间:2015-01-13 22:23:37

标签: c# wpf image winforms

我有一个包含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中。

1 个答案:

答案 0 :(得分:2)

您可以做的是让事件设置第二个窗口的内容,其他窗口的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 Name ="Window2">
    <Grid>
        <Image Source={Binding .} />
    </Grid>
</Window2>

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