2017-02-03 4 views
0

Ich habe ein MainWindow mit einem Datagrid und einem Bildrahmen. Das Datagrid enthält ein Bild pro Zeile. Wenn ich die Zeile anwähle, wird das Bild (Bild1) in einem Bildrahmen angezeigt.WPF Anzeige des gleichen Bildes in zwei verschiedenen Fenstern

Ich möchte dieses Bild in einem anderen Fenster (WindowPicture) anzeigen, indem ich auf eine Schaltfläche in MainWindow klicke.

Ich habe den folgenden Code funktioniert gut, aber wenn ich ein anderes Bild auswählen, wird im Hauptfenster, aber nicht in dem zweiten Fenster Aktualisierung:

Hauptfenster XAML Bild 1

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

Mainwindow XAML Button-Aktion

Name="btnWindowPicture" 
Click="btnWindowPicture_Click" 

MainWindow.cs Button-Aktion

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> 

Ich brauche wahrscheinlich einen Zweiweg-Bindungsmodus im button_click Verfahren zu schaffen, aber ich weiß nicht, wie es programmatisch zu tun.

Dank

Antwort

0

Sie konnten die Datacontext des Image im WindowPicture Fenster auf die gleiche wie die Datacontext des Image im MainWindow gesetzt und eine ähnliche Bindung programmatisch einrichten:

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(); 
} 

Vergewissern Sie sich, dass das Image Element zugänglich von außerhalb der WindowPicture Klasse, damit dies funktioniert. Sie könnten entweder setzen Sie die x: Gemeinsames Attribut auf öffentliche oder interne oder die Image durch eine Eigenschaft der WindowPicture Klasse aussetzen:

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

Dank mm8. Ich habe versucht, den Datenkontext des Bildes in XAML ohne Erfolg einzustellen. Es funktioniert jetzt wie ein Zauber. Grüße. – Kerike

0

Warum Sie haben nicht die Datacontext des WindowPicture gleiche wie die Mainwindow? Auf diese Weise können Sie Bilder in beiden Fenstern binden.

Verwandte Themen