2010-08-12 28 views
29

Tôi có Cửa sổ bật lên Cửa sổ khác. Tôi muốn cửa sổ thứ hai có thể trả về một đối tượng cho cửa sổ đầu tiên khi nhấn một nút. Làm thế nào tôi sẽ làm điều này?Giá trị trả lại của cửa sổ WPF

+0

là cửa sổ modal mới vào cửa sổ đầu tiên? – Robaticus

+0

Lúc đầu tôi thậm chí còn không biết cửa sổ phương thức là gì nhưng tôi đã tìm ra nó. Mã của Thomas bên dưới với một chút chỉnh sửa hoạt động. – Reflux

Trả lời

43

Bạn có thể hiển thị thuộc tính trên cửa sổ thứ hai để cửa sổ đầu tiên có thể truy xuất.

public class Window1 : Window 
{ 
    ... 

    private void btnPromptFoo_Click(object sender, RoutedEventArgs e) 
    { 
     var w = new Window2(); 
     if (w.ShowDialog() == true) 
     { 
      string foo = w.Foo; 
      ... 
     } 
    } 
} 

public class Window2 : Window 
{ 
    ... 

    public string Foo 
    { 
     get { return txtFoo.Text; } 
    } 

} 
+1

Điều đó không có tác dụng vì người dùng tương tác với cửa sổ và nhấn một nút trước khi tôi muốn cửa sổ chính để lấy giá trị. – Reflux

+3

Tôi đã tìm ra. Vấn đề là nó nên được nếu (w.ShowDialog() == false). – Reflux

+0

@Reflux: bạn có chắc không? ShowDialog trả về false khi người dùng hủy bỏ hộp thoại, vì vậy bạn có thể không muốn đưa giá trị vào tài khoản trong trường hợp đó –

17

Nếu bạn không muốn để lộ một tài sản, và bạn muốn làm cho việc sử dụng một chút rõ ràng hơn, bạn có thể quá tải ShowDialog:

public DialogResult ShowDialog(out MyObject result) 
{ 
    DialogResult dr = ShowDialog(); 
    result = (dr == DialogResult.Cancel) 
     ? null 
     : MyObjectInstance; 
    return dr; 
} 
0

Tôi biết đây là một cũ, nhưng tôi đang tìm kiếm thông tin tương tự cho một ứng dụng WPF mà tôi đang làm việc. Tôi tìm thấy trang web này là thực sự hữu ích:

http://www.dreamincode.net/forums/topic/206458-the-right-way-to-get-values-from-form1-to-form2/

này được viết cho Windows Forms, nhưng nếu bạn bỏ qua một phần về việc chuyển giá trị vào cửa sổ mới, nó vẫn làm việc và đã có một số thông tin thực sự tốt.

Trên một mặt lưu ý, để vượt qua các giá trị vào cửa sổ mới, đây là thực sự hữu ích:

WPF passing string to new window

+1

Chào mừng bạn đến với StackOverflow. Mặc dù các liên kết bạn cung cấp có thể hữu ích nhưng bạn nên đặt trực tiếp các điểm chính vào bài đăng của mình. Bằng cách này, câu trả lời của bạn không trở nên không liên quan nếu liên kết bị hỏng và cũng dễ sử dụng hơn và hữu ích hơn. Vì vậy, tôi khuyên bạn nên chỉnh sửa câu trả lời của bạn cho phù hợp. Trân trọng – YakovL

Các vấn đề liên quan