之外创建独立的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