2013-12-12 61 views
2

我試圖將字符串傳遞到一個新的窗口,當它打開,它不工作。這是窗口1中的代碼;WPF將字符串傳遞到新窗口

窗口1

private void myButton_Click(object sender, RoutedEventArgs e) 
{ 
    var newMyWindow2 = new myWindow2(); 
    newMyWindow2.Show(); 
    newMyWindow2.myString = "The great String Value"; 
} 

在Windows 2這裏是我的字符串的聲明;

視窗2

public partial class myWindow2 : Window 
{ 
    public string myString { get; set; } 
} 

當我運行它的字符串是走出NULL。爲什麼是這樣?

+0

你從哪裏訪問第二個窗口的字符串?機率是在第一個窗口設置屬性之前,即在構造函數中或在顯示窗體之前或之後的某個時間。 – Servy

+0

爲什麼不通過'myWindow2'的構造函數傳遞字符串? – ryrich

+0

@HighCore同意,MSDN上的很棒的教程。 – ryrich

回答

8

這是我會做的。將字符串傳遞給構造函數,然後分配它。

public myWindow2(string value) 
{ 
    InitializeComponent(); 

    this.myString = value; 
} 
1

在設置字符串值之前顯示窗口,這意味着窗口的空值爲myString。將字符串值作爲參數傳遞給構造函數,或者定義默認值string.Empty

+0

這樣做 var newMyWindow2 = new myWindow2(); newMyWindow2.myString = string.Empty; newMyWindow2.myString =「偉大的字符串值」; newMyWindow2.Show(); 沒有區別 – Xaphann

+1

@Xaphann您應該從[回答您提出的問題]開始(http://stackoverflow.com/questions/20547904/wpf-passing-string-to-new-window#comment30727097_20547904),以便我們可以有足夠的信息來回答這個問題,而不是像Lee那樣猜測。 – Servy