2012-05-04 34 views
0

我使用Silverlight,並傳入一個值在childwindow一個文本框,傳值到文本框

textBox1_TextChanged事件應該觸發一個Web服務調用應該填充在childwindow一個列表框,但出於某種原因,當子窗口加載時,文本框會根據需要傳入值,但由於某種原因,TextChanged事件不會觸發?

這是否有任何具體原因?

這裏是變化的事件 -

private void textBox1_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     WebService.Service1SoapClient client = new WebService.Service1SoapClient(); 
     client.PRSHListCompleted += new EventHandler<PRSHListCompletedEventArgs>(client_PRSHListCompleted); 
     client.PRSHListAsync(System.Convert.ToInt16(textBox1.Text)); 

     textBox2.Text = "OK"; //I did this to test if I was getting to the event and it failed. 
    } 

textBox1.Text通過從父窗口這裏 -

Settings set = new Settings(); 
set.textBox1.Text = System.Convert.ToString(PRSID); 

set.Show(); 

哪裏set是子窗口。

這是文本框的XAML -

<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="12,13,0,0" Name="textBox1" VerticalAlignment="Top" Width="28" TextChanged="textBox1_TextChanged" /> 
+3

你能不能給我們的代碼塊,其中你可以將這個事件訂閱? –

+0

您能否粘貼一些代碼,主要是事件如何連接以及值如何傳遞給文本框。 – Lukazoid

+0

好的,現在我們可以看到事件處理程序和文本更改代碼,但是如何在代碼中進行事件訂閱? –

回答

1

您可以設置textBox1.Text右後Settings.Loaded事件被觸發,所有的XAML事件訂閱製成。

那麼試試這個:

Settings set = new Settings(); 
set.Loaded += (o, args) => 
{ 
    //set.Dispatcher.BeginInvoke(() => 
    //{ 
    set.textBox1.Text = System.Convert.ToString(PRSID); 
    //}); 
}; 

set.Show(); 
+0

其奇怪的是,這工作過一次,但再次嘗試失敗?如果手動刪除,然後在窗體加載後鍵入PRSID,則會觸發textBox-Changed事件,並且該值將更新lstbox。還有其他建議嗎? – Ebikeneser

+0

我更新了我的代碼。如果你取消註釋新代碼,一切都應該沒問題,但是我仍然不確定爲什麼沒有新代碼就不穩定。我會試着弄清楚是什麼問題,如果我找到了什麼,我會讓你知道 –

+0

你明白了!如果我可能要求解釋爲什麼這種方法可行?我認爲它是強制清除表單然後更新?萬分感激。 – Ebikeneser