2015-10-09 65 views
0

我有彈出第二個窗口,當用戶在窗口1.通實例化屬性,第二WPF窗口,然後返回屬性在確定

雙擊列表視圖項我想通過列表視圖的一個實例項目添加到第二個窗口,它將用於填充GUI中的數據。當第二個窗口關閉時,它應該從GUI返回新的值。爲什麼這似乎不起作用?

在Doubleclick中發生錯誤。它不允許我直接設置屬性CurrentItem = selUser。通過使用用戶VAL = editDialog.CurrentItem當對話框返回OK

Error 1 'System.Windows.Window' does not contain a definition for 'CurrentItem' and no extension method 'CurrentItem' accepting a first argument of type 'System.Windows.Window' could be found (are you missing a using directive or an assembly reference?) C:\Users\jmartini\Projects\wpf_listShowSelected\WpfApplication1_setup01\WpfApplication1\MainWindow.xaml.cs 34 24 WpfApplication1

而且我不能得到回報的價值:我得到這個錯誤。我得到了與上面提到的一樣的錯誤。

我不清楚如何解決這個問題。

WPF窗口1(CS):

using System; 
using System.Collections.Generic; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Input; 

namespace WpfApplication1 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      List<User> items = new List<User>(); 
      items.Add(new User() { Name = "John Doe", Age = 42, Mail = "[email protected]", Info = "A basketball player" }); 
      items.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "[email protected]", Info = "A soccer player" }); 
      items.Add(new User() { Name = "Sammy Doe", Age = 13, Mail = "[email protected]", Info = "A hockey player" }); 
      lvDataBinding.ItemsSource = items; 
     } 

     private void listViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
     { 
      ListViewItem item = sender as ListViewItem; 
      // create instance of original User to use for second window 
      User selUser = item.Content as User; 

      // POPUP WINDOW 
      Window editDialog = new EditWindow(); 
      editDialog.Owner = this; 
      editDialog.CurrentItem = selUser; 
      editDialog.ShowDialog(); 

      if (editDialog.DialogResult.HasValue && editDialog.DialogResult.Value) 
      { 
       User val = editDialog.CurrentItem; 
       Console.WriteLine("User pressed OK"); 
      } 
      else 
      { 
       Console.WriteLine("User pressed Cancel"); 
      } 

     } 
    } 
} 

WPF窗口2(CS):

using System.Windows; 

namespace WpfApplication1 
{ 
    public partial class EditWindow : Window 
    { 
     public User CurrentItem {get; set;} 

     public EditWindow() 
     { 
      InitializeComponent(); 
     } 

     private void ButtonOkClick(object sender, RoutedEventArgs e) 
     { 
      DialogResult = true; 
      Close(); 
     } 

     private void ButtonCancelClick(object sender, RoutedEventArgs e) 
     { 
      DialogResult = false; 
      Close(); 
     } 
    } 
} 
+0

更新問題更清楚。 '它不允許我直接設置財產'是什麼意思?你是否收到編譯錯誤?你是否遇到運行時錯誤?你得到的錯誤/例外是什麼? '它不允許我直接設置屬性'不提供有用的信息。 – user469104

+0

更新了包含錯誤的問題 – JokerMartini

+0

這是編譯器還是運行時錯誤? –

回答

0

更改爲EditWindow editDialog =新EditWindow();