WPF在两个不同的窗口中显示相同的图像

时间:2017-02-03 15:59:11

标签: wpf image binding

我有一个带有数据网格和图像框架的MainWindow。 datagrid每行包含一个图像。当我选择行时,图像(图像1)显示在图像框中。

我想通过点击MainWindow中的按钮在另一个窗口(WindowPicture)中显示该图像。

我有以下代码正常工作但当我选择不同的图像时,它在主窗口中更新,但不在第二个窗口中更新:

MainWindow XAML Image 1

Image x:Name="image1"
Source="{Binding SelectedImage,Mode=TwoWay,Converter={StaticResource imgPathCon}}"

MainWindow XAML按钮操作

Name="btnWindowPicture"
Click="btnWindowPicture_Click" 

MainWindow.cs按钮操作

private void btnWindowPicture_Click(object sender, RoutedEventArgs e)
    {
        WindowPicture win2 = new WindowPicture();
        win2.image2.Source = new BitmapImage(new Uri(SelectedImage));
        win2.Show();
    }

WindowPicture XAML

<Grid>
    <Image x:Name="image2" 
     HorizontalAlignment="Left" 
     Height="798" 
     Margin="10,10,0,0" 
     VerticalAlignment="Top" Width="871" Stretch="Fill"  />
</Grid>

我可能需要在button_click方法中创建双向绑定模式,但我不知道如何以编程方式执行此操作。

由于

2 个答案:

答案 0 :(得分:0)

为什么不将WindowPicture的datacontext与MainWindow相同?这样你就可以在两个窗口中绑定图像了。

答案 1 :(得分:0)

您可以将Image窗口中WindowPicture的DataContext设置为与ImageMainWindow的DataContext相同,并以编程方式设置类似的绑定:

private void btnWindowPicture_Click(object sender, RoutedEventArgs e)
{
    WindowPicture win2 = new WindowPicture();
    win2.image2.DataContext = image1.DataContext;
    win2.image2.SetBinding(Image.SourceProperty, new Binding("SelectedImage") { Converter = new YourImagePathConverterType() });
    win2.Show();
}

确保可以从Image类外部访问WindowPicture元素,以实现此目的。您可以将x:Shared属性设置为public或internal,也可以通过WindowPicture类的属性公开Image

<Image x:Name="image2" 
     HorizontalAlignment="Left" 
     Height="798" 
     Margin="10,10,0,0" 
     VerticalAlignment="Top" Width="871" Stretch="Fill"
     x:Shared="False"/>