2017-03-03 132 views
1

我有2个窗口,当第一个窗口上的按钮被点击时,第二个窗口会出现,提示用户选择/上传图像。所有相关的XAML对象都被创建和设计。将字符串从1个窗口传递到另一个窗口 - XAML

问题:如何从第二个窗口获取源文件的字符串值以显示在第一个窗口的文本块中?

打开窗口&获取字符串的资源文件代码的价值:

 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.CS – Legend

+0

伙计,'公共部分类AddImage'是你的AddImage类 –

+0

我已经重新工作它只显示在第二个窗口,但我遇到了由mainWindow上的Image不会通过路径 – Legend

相关问题