2017-03-03 8 views
1

私は2つのウィンドウを持っています。最初のウィンドウでボタンをクリックすると、2番目のウィンドウが表示され、イメージの選択/アップロードを促します。関連するすべてのXAMLオブジェクトが作成され、スタイル設定されます。1つのウィンドウから別のウィンドウに文字列を渡す - XAML

質問:2番目のウィンドウのソースファイルの文字列値を最初のウィンドウのテキストブロックに表示するにはどうすればよいですか?

SOURCEFILEコードの

オープンウィンドウ&取得文字列値:

 private void btn_Image_Click(object sender, RoutedEventArgs e) 
    { 
     // Create the window 
     AddImage AddImageScreen = new AddImage(); 
     AddImageScreen.Owner = this; 
     // Open and show the window 
     AddImageScreen.ShowDialog(); 

     txtblock_ImgAddress = // How do I get the image source file here? 
    } 

選択/画像をアップロードコード:

 public partial class AddImage : Window 
{ 

    string imageDirectory; 

    public AddImage() 
    { 
     InitializeComponent(); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 

     Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); 
     dlg.Filter = "Images (*.JPG;*.JPEG;*.PNG) | *.JPG;*.JPEG;*.PNG"; 
     Nullable<bool> result = dlg.ShowDialog(); 

     string sourceFile = ""; 
     string fileName = ""; 

     if (result == true) 
     { 
      sourceFile = dlg.FileName; 
      fileName = sourceFile.Substring(sourceFile.LastIndexOf('\\')); 
      var SourceFile = sourceFile; 

     } 

     string destinationFile = imageDirectory + fileName; 

     File.Copy(sourceFile, destinationFile); 

     GetFilesInDirectory(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     SetImageDirectory(); 
     GetFilesInDirectory(); 
    } 

    private void GetFilesInDirectory() 
    { 
     // Populate images in selection box 

     lbxFiles.ItemsSource = null; 

     string[] images = Directory.GetFiles(imageDirectory); 
     string[] fileNames = new string[images.Length]; 

     for (int i = 0; i < images.Length; i++) 
     { 
      fileNames[i] = images[i].Substring(images[i].LastIndexOf('\\') + 1); 
     } 

     lbxFiles.ItemsSource = fileNames; 
    } 

    private void SetImageDirectory() 
    { 
     // Set the directions to get into images 
     string currentDirectory = Directory.GetCurrentDirectory(); 

     DirectoryInfo parent = Directory.GetParent(currentDirectory); 

     DirectoryInfo grandparent = parent.Parent; 

     currentDirectory = grandparent.FullName; 

     imageDirectory = currentDirectory + "\\images"; 
    } 

    private void lbxFiles_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     // open selected file 
     string fileName = lbxFiles.SelectedItem as string; 

     if (fileName != null) 
     { 
      imgAnimal.Source = new BitmapImage(new Uri(imageDirectory + "\\" + fileName, UriKind.Absolute)); 

     } 
    } 

    private void btn_Save_Click(object sender, RoutedEventArgs e) 
    { 

    } 

答えて

0

あなたはAddImageクラスのパブリック変数を宣言し、最初のウィンドウでそれを得ることができます。

+0

AddImageクラスはなく、XAMLとXAMLだけです。 – Legend

+0

Dude、 'public partial class AddImage'はAddImageクラスです –

+0

私は2番目のウィンドウに表示するように再編集しましたが、 mainWindow上の画像がパスを通して画像を表示しない場合の問題 – Legend

関連する問題