2016-03-23 17 views
0

私の問題は、私が返すウィンドウが必要な変数があるので、これを達成するために使用しています。 WPFウィンドウのコンストラクタの例を次に示します。C#WPFウィンドウのパラメータを 'out'に設定

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

私がいる問題は、私はとてもクラスの他のいずれかの方法は、以下のように呼び出し元のクラスに送信されますFormFilled変数を変更することができますしたいです。

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

明らかButton_Yes_Click方法がFormFilled変数へのアクセス権を持っていない、と私は、この変数が唯一のコンストラクタの範囲にあるので、私は可能このメソッドからFormFilled変数の値を変更することができますどのように把握しようとしています。私は「アウト」を使って可能なことをしようとしているのですか、別のルートに行く必要がありますか?

+2

なぜFormFilledをウィンドウのプロパティを呼び出し、ウィンドウをダイアログとして呼び出し、プロパティをフェッチしますか? – Wobbles

+0

私はそれを本当に考えなかったと思う。 – user2980207

+3

ホイールを再発明しないのが最善です。 .DialogResultプロパティも一見価値があるかもしれません – Wobbles

答えて

2

は、メソッドを呼び出し、このパターンを試してみてください:

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

} 

フォームウィンドウ:

public partial class DialogForm : Window 
{ 
    public DialogForm() 
    { 
     InitializeComponent(); 
    } 

    void submitButton_Click(object sender, RoutedEventArgs e) 
    { 

     this.DialogResult = true; 
    } 
} 

WPFでの呼び出し元のメソッドは、結果をチェックするための若干異なります。

bool? result = myDialogForm.ShowDialog(); 
if (result.HasValue && result.Value) 
関連する問題