WPF引用来自另一个模块,类或窗口的文本框文本
我有几个命名文本框包含我希望保存在文件中的值。我以前从另一个模块引用的文本框这样WPF引用来自另一个模块,类或窗口的文本框文本
owrite.Writeline(form1.textbox1.text)
使用WPF我无法弄清楚如何做到这一点是能够做到这一点在winform。我可以当我尝试从不同的模块使用此代码
owrite.Writeline(me.textbox1.text)
的MainWindow.xaml.vb内做到这一点,但我不能暴露(查找)文本框。我可以在MainWindow中做到这一点,这是事实,但我也想知道如何。编辑: 谢谢你的帮助。根据下面的一些建议,我已经使用以下内容来创建我的设置文档,它基本上可以从程序中的任何模块写入。正如我说不是编写WPF和独立的UI线程和数据,但为它做什么,它适合我的目的的正确方法:(文本被命名为文本框)
Dim mainWin = Application.Current.Windows.OfType(Of MainWindow).FirstOrDefault()
Using oWrite As New System.IO.StreamWriter(AppPath & "\SETTINGS\User Config.txt", False)
oWrite.WriteLine(mainWin.Text_ServerName.Text)
oWrite.WriteLine(mainWin.Text_DBName.Text)
oWrite.WriteLine(mainWin.Text_ServerUserName.Text)
oWrite.WriteLine(mainWin.Text_ServerPass.Text)
oWrite.WriteLine(mainWin.Text_StorageDriveLetter.Text)
oWrite.Close()
End Using
你可以使用x:FieldModifier指令来改变控制字段的修改,以便能够从其它类访问:
<TextBox x:Name="textbox1" x:FieldModifier="public" />
X:FieldModifier:https://msdn.microsoft.com/en-us/library/aa970905(v=vs.110).aspx
另一种选择是在代码隐藏类的观点来定义属性,通过此属性访问控制:
Class MainWindow
Public ReadOnly Property TheTextBox() As TextBox
Get
Return textbox1
End Get
End Property
End Class
在这两种情况下,你将需要得到在访问其任何控件之前对该窗口的引用。例如,您可以使用Application.Current.Windows集合获取对打开窗口的引用:
Dim mainWindow As MainWindow = Application.Current.Windows.OfType(Of MainWindow).FirstOrDefault()
Dim s As String = mainWindow.TheTextBox.Text
因为我想在一个例程中获得一个小于一秒的值,并且是通过按钮单击来触发的,我只是使用了窗口引用。它可能不完全符合用户界面和数据分离的精神,但它对我的应用程序有效。谢谢 – user1500403
只要你的代码命名在你后面应该能够:
var data = MyTextBox.Text;
//Do whatever with your data.
“尝试使用不同的模块。”表示不同的窗口? – WPFUser
是的,不同的窗口可能是这种情况适用的一种情况。然而,我经常创建只是代码模块来组织我的代码。 – user1500403