将数据从文本框分配到变量(C#,WPF)
在xaml中,我有一个文本框:将数据从文本框分配到变量(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
<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!
}