我有几个命名的文本框,其中包含我希望保存在文件中的值。我曾经能够通过引用来自另一个模块的文本框来实现winform中的这个
owrite.Writeline(form1.textbox1.text)
使用WPF我无法知道如何执行此操作。我可以使用此代码
在MainWindow.xaml.vb中执行此操作owrite.Writeline(me.textbox1.text)
但是当我从另一个模块尝试时,我无法公开(找到)文本框。我可以在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
答案 0 :(得分:1)
您可以使用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
答案 1 :(得分:0)
只要你在后面的代码中命名,你应该能够:
var data = MyTextBox.Text;
//Do whatever with your data.