WPF引用来自另一个模块,类或窗口的文本框文本

时间:2016-12-27 04:33:04

标签: wpf vb.net

我有几个命名的文本框,其中包含我希望保存在文件中的值。我曾经能够通过引用来自另一个模块的文本框来实现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

2 个答案:

答案 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.