之外創建獨立的I類有形式WPF應用程序,其具有一個名爲「txtStatusWindow」文本框。我還有一個vb.net類,由一名合作者交給我,需要在我的應用程序代碼中調用並由代碼執行。我的同事堅持認爲我需要使用常見的.net事件來更新我的表單上的文本框。WPF和VB.net:數據綁定到表達混合
單獨vb.net類:
Public Class globalclass
Public Event txtStatusWindow(ByVal Text As String)
Public Sub InitializeProgram()
RaiseEvent txtStatusWindow("Updating something.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something else.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something other than else.")
System.Threading.Thread.Sleep(2000)
RaiseEvent txtStatusWindow("Updating something other than the else stuff.")
System.Threading.Thread.Sleep(2000)
End Sub
End Class
我需要能夠從我的代碼隱藏調用子「InitializeProgram()」,它需要能夠更新「txtStatusWindow.text 「當它運行。
我告訴他,文本框的更新可以通過數據綁定來完成,但是我不知道如何將這樣一個單獨的類集成到我的項目中,如何調用它的方法,或者如何導致它通過數據綁定更新我的文本塊。
我還建議,在這個類中的方法不適合用來連接到WPF項目反正,但他只是寫了它作爲一個例子來探索如何將兩個項目連接起來。
最後,我將需要集成類,如這些將運行單獨的線程從動態源更新他們的數據,並導致許多控制在我的應用程序更新。
到目前爲止,我們已經能夠得到這個從我的代碼隱藏的唯一方法是這樣的:
Partial Public Class SplashScreen
Dim NewText as String
Public WithEvents Globals As globalclass = New globalclass
Public Delegate Sub StringDelegate(ByVal Text As String)
Public SplashText As String
Public Sub New()
MyBase.New()
Me.InitializeComponent()
Me.Show()
Globals.InitializeProgram()
End Sub
Public Sub UpdateSplashscreenHandler(ByVal Text As String) Handles Globals.UpdateSplashScreen
StatusWindowText.Text = Text
End Sub
儘管事實WPF畫面「凍結」,直到「globalclass InitializeProgram」方法完成(txtStatusWindow.Text不更新,而不使用深奧的「刷新」擴展...),我完全相信我們正在做這個錯誤的方式。
有在那裏關於整合,然後在現有代碼結合對象珍貴的幾個例子。感謝您檢查我們的小窘境。
你是說沒有涉及到XAML,你直接從VB創建所有的UI? – MojoFilter 2010-10-08 13:09:52