我有一个带有数据网格和图像框架的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方法中创建双向绑定模式,但我不知道如何以编程方式执行此操作。
由于
答案 0 :(得分:0)
为什么不将WindowPicture的datacontext与MainWindow相同?这样你就可以在两个窗口中绑定图像了。
答案 1 :(得分:0)
您可以将Image
窗口中WindowPicture
的DataContext设置为与Image
中MainWindow
的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"/>