2017-02-03 21 views
0

私は、データグリッドと画像フレームを持つMainWindowを持っています。データグリッドには、行ごとに1つのイメージが含まれます。行を選択すると、イメージ(image1)がイメージフレームに表示されます。WPF 2つの異なるウィンドウに同じ画像を表示

MainWindowのボタンをクリックして別のウィンドウ(WindowPicture)にその画像を表示したいとします。

私は次のコードで正常に動作しますが、私は別の画像を選択した場合、それはメインウィンドウではなく、第二のウィンドウに更新されます:

メインウィンドウXAML画像1

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

メインウィンドウの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方法で双方向結合様式を作成する必要がありますが、私はプログラム的にどのように行うのか分かりません。あなたがメインウィンドウと同じWindowPictureのDataContextのを持っていないのはなぜ

おかげ

答えて

0

あなたはMainWindowImageのDataContextのと同じにWindowPictureウィンドウでImageの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"/> 
+0

ありがとうございますmm8。私は成功のないXAMLで画像のデータコンテキストを設定しようとしました。それは今の魅力のように働いています。よろしく。 – Kerike

0

?そうすれば、両方のウィンドウでイメージをバインドすることができます。

関連する問題