2015-01-13 73 views
0

我有一个包含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,当我按下按钮。

回答

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)并将其设置为内容,而不是将成为ViewModel类的一部分的ImageSource。

相关问题