2016-03-23 46 views
0

Benim sorunum, geri göndermek için pencereye ihtiyacım var bir değişken var, bu yüzden bunu gerçekleştirmek için kullanıyorum. WPF penceresi için kurucunun bir örneği.C# WPF Penceresi 'out' parametresi için

public CustomYesNo(out bool FormFilled) 
    { 
     InitializeComponent(); 
     FormFilled = false; 
    } 

i yaşıyorum sorun bunu sınıftaki diğer yöntemlerin böylece bir aşağıda gibi arayan sınıf geri gönderilen alır FormFilled değişkeni değiştirmek mümkün olacaktır istediğim.

private void Button_Yes_Click(object sender, RoutedEventArgs e) 
    { 
     FormFilled = true; 
     Close(); 
    } 

Açıkçası Button_Yes_Click yöntemi FormFilled değişkene erişimi yok ve ben bu değişken beri bu yöntemden FormFilled değişkenin değeri sadece şantiye kapsamında olası değişikliktir nasıl anlamaya çalışıyorum . 'Dışarıda' kullanarak yapmaya çalıştığım şey mi yoksa başka bir rotaya gitmem mi gerek?

+2

:

public partial class DialogForm : Window { public DialogForm() { InitializeComponent(); } void submitButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; } } 

WPF arama yöntemi sonucu kontrol etmek için biraz farklıdır Neden FormFilled'i bir pencerede özelliği ve pencereyi bir iletişim kutusu olarak çağırıp daha sonra özelliği geri getirin mi? – Wobbles

+0

Sanırım öyle yapabilirdim, bunu gerçekten düşünmedim. Tekerleği yeniden icat etmemek için en iyi – user2980207

+3

. .DialogResult özelliği de bir göz atmaya değer olabilir – Wobbles

cevap

2

bu modeli deneyin yöntemi çağırma

:

class foo 
{ 
    public void bar() 
    { 
     DialogForm myDialogForm = new DialogForm(); 
     myDialogForm.ShowDialog(); 
     if (myDialogForm.DialogResult) 
     { 
      //Its true 
     } 
    } 

} 

Formu penceresini:

bool? result = myDialogForm.ShowDialog(); 
if (result.HasValue && result.Value)