2013-07-16 98 views
0

我有一個類MyWindow,它從Window繼承。在MyWindow,我有以下的方法來執行一次我的OK按鈕被點擊:WPF初始化問題

private void OKButton_Click(object sender, RoutedEventArgs e) 
    { 
     var be = NameBox.GetBindingExpression(TextBox.TextProperty); 
     be.UpdateSource(); 
     this.Close(); 
    } 

XAML:

<Button Content="OK" 
     Click="OKButton_Click" 
     HorizontalAlignment="Left" 
     Margin="175,473,0,0" 
     VerticalAlignment="Top" 
     Width="75" 
     RenderTransformOrigin="-0.04,0.5"/> 

在一個單獨的類,我初始化我的UI窗口,我說

MainWindow window = new MainWindow(ViewModel); 
window.Show(); 

但是,只要window.Show()被執行,後續的代碼就會被執行,我實際上無法與我的窗口進行交互來做我需要做的事情。我覺得這只是對如何在更大範圍內實際使用WPF的誤解......任何幫助?

+1

當你調用'window.Show()'時會發生什麼?界面是否凍結?在輸出窗口中是否有任何異常或錯誤?什麼是「後續代碼」? – PoweredByOrange

+3

是否需要調用['Window.ShowDialog'](http://msdn.microsoft.com/zh-cn/library/system.windows.window.showdialog.aspx)?不知道更多關於這個窗口應該做什麼,我毫不猶豫地建議這個答案。 – ChrisF

+0

是的,我認爲你要找的是ShowDialog。 –

回答

0

Window.ShowDialog是什麼需要查看頁面。但是你沒有像你那樣獲得有約束力的信息;這也應該改變。

當文本框失去焦點,它將更新的結合,使代碼不需要

var be = NameBox.GetBindingExpression(TextBox.TextProperty); 
be.UpdateSource(); 

。 (這是一個剩餘的形式winform編程?)所以我建議不更新綁定本身。

如果綁定未更新,唯一可能的做法是將綁定更改爲使用TwoWay的模式,以確保綁定到屏幕上的變量和文本框之間來回傳輸數據。