Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从文本框分配到变量(C#,WPF)_C#_Xaml_Data Binding_Binding - Fatal编程技术网

将数据从文本框分配到变量(C#,WPF)

将数据从文本框分配到变量(C#,WPF),c#,xaml,data-binding,binding,C#,Xaml,Data Binding,Binding,在xaml中,我有一个文本框: <TextBox Text="{Binding Path=LoginName}" Style="{StaticResource myTextBox}" /> 稍后,我将使用此userLogin进入其他方法,如下所示: static async Task<string> SomeTest() { ... if (method == "authenticate") jsonString = "{.... + userLogin

在xaml中,我有一个文本框:

<TextBox Text="{Binding Path=LoginName}" Style="{StaticResource myTextBox}" />
稍后,我将使用此userLogin进入其他方法,如下所示:

static async Task<string> SomeTest() {
...
  if (method == "authenticate")
      jsonString = "{.... + userLogin + ...}";
...
}
静态异步任务SomeTest(){
...
如果(方法==“验证”)
jsonString=“{..+userLogin+..}”;
...
}
我做错了什么?它应该做得多正确?也许SetUser不是必需的?

根据您的绑定(
Text=“{binding Path=LoginName}”
),在您的数据上下文中应该有一个名为
LoginName
的类型为
string
的公共属性(在您的情况下,它似乎就是视图本身):

此外,作为Leonid Malyshev,如果希望在每次击键时更新
LoginName
,则需要在绑定中明确指定它,如下所示:

<TextBox Text="{Binding Path=LoginName, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource myTextBox}" />
然后,您可以直接从代码中访问它:

private static string userLogin;

public static void SetUser()
{
    userLogin = LoginName.Text; // with an uppercase T!
}

为什么不在第二种方法中调用LoginName.text呢?当我像你写的那样写这个时,我得到了一个错误:“非静态字段需要一个对象引用……”糟糕,我在这里睡着了。你会调用userLogin吗?发生了什么事情表明它不起作用?或者您可以在xaml中使用userLogin static,您可以将LoginName用作属性(没关系),但在代码中,您将其用作控件的名称。选择一种方式,不要混用两种方式。还请记住,当更改文本时,您必须离开文本框(默认行为)或设置更新类型上的值。我只想使用“登录”一次并将其用于我的方法……无论如何,感谢@Julien的精彩解释!
<TextBox Text="{Binding Path=LoginName, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource myTextBox}" />
<TextBox x:Name="LoginName" Style="{StaticResource myTextBox}" />
private static string userLogin;

public static void SetUser()
{
    userLogin = LoginName.Text; // with an uppercase T!
}