我正在构建一个表单,该表单在“浏览...”按钮旁边具有普通形式的文本框。如果浏览了文件,则将其粘贴到文本框中。
我希望能够使用一个单独的函数来读取文件,但是我找不到任何方法来使文本超出函数的范围,而该函数不能在关闭浏览对话框时将其粘贴。
所以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 。怪人。无论如何,谢谢大家。