将图像源从一个窗口传递到另一个窗口
本文关键字:窗口 一个 另一个 图像 | 更新日期: 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类的一部分。