首页 > 解决方案 > 如何从 C# 访问 WPF 文本框中的文本作为字符串?

问题描述

我正在构建一个表单,它在“浏览...”按钮旁边具有通常形式的文本框。如果浏览了文件,则将其粘贴到文本框中。

我希望能够使用单独的函数来读取文件,但是我找不到任何方法可以在关闭浏览对话框时将文本粘贴到函数范围之外。

所以 XAML 文本是这样的:

        <TextBlock Grid.Row="3" Grid.ColumnSpan="3">Source File:</TextBlock>
        <TextBox Grid.Row="4" Grid.ColumnSpan="3"   Name="FileNameTextBox" Margin="2"></TextBox>
        <Button Grid.Column="3" Margin="2" Name="button1" Click="button1_Click" Grid.Row="4">Browse...</Button>

它背后的 C# 代码是这样的:

public void button1_Click(object sender, RoutedEventArgs e)
{
    // Create OpenFileDialog
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

    // Set filter for file extension and default file extension
    dlg.DefaultExt = ".txt";
    dlg.Filter = "Text documents (.txt)|*.txt";

    // Display OpenFileDialog by calling ShowDialog method
    Nullable<bool> result = dlg.ShowDialog();

    // Get the selected file name and display in a TextBox
    if (result == true)
    {
        // Open document
        string filename = dlg.FileName;
        FileNameTextBox.Text = filename;
    }
}

我对这一切都很陌生,所以如果可能的话,请以我能理解的方式解释它......但是这样做之后,为什么我不能再次使用“FileNameTextBox.Text”引用另一个函数中的文本?这不存在于 XAML 中,而不存在于 C# 代码中吗?新功能无法“看到”它。

我觉得这在某种程度上是由于在浏览功能中有“(对象发件人......”,但如果不制作“阅读你刚刚浏览的内容”按钮,我看不到再次做同样事情的方法它,这是没有意义的。

将文本框{绑定}到其他代码中会以某种方式解决吗?到目前为止,我还没有找到可以让我充分理解它以完全使用它的描述。

即使这确实有效,我仍然不知道我可以在哪些地方声明一个“DataContext”,因为一半的时间都没有建议。

编辑:所以,我在当天晚些时候又回到了它,通过我只能想象的是添加或删除弯曲括号的经典案例,C# 突然能够检测到我正在输入的对象 FileNameTextBox。怪人。无论如何,谢谢大家。

标签: c#wpfxamltextbox

解决方案


推荐阅读