【问题标题】:Databinding Entry in Xamarin FormsXamarin 表单中的数据绑定条目
【发布时间】:2019-05-24 18:41:50
【问题描述】:

我正在尝试在 Xamarin Forms 的登录文本框中捕获条目的值。我已经创建了类,数据绑定在 xmal 中,但是在为 iOS 编译时遇到了构建错误。任何指针都非常感谢。

登录.xmal:

 <Entry x:Name="{Binding Source = AppLoginUsername;}" Placeholder="Username" 
                   Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3"
                   HorizontalOptions="StartAndExpand" WidthRequest="300" />

FormEntry Class.cs

使用系统; 命名空间 SGC.Class

{
    public class FormEntryBindings
    {
        public FormEntryBindings()
        {


        }


        public static string AppLoginUserName { get; set; }
    }
}

Home.cs(获取登录页面中输入的用户名并计算出 CustomerID)

private async void getCustBalance()
        {
            HttpClient client = new HttpClient();

            string x = FormEntryBindings.AppLoginUserName;

            int custid =  GetCustomerId(x);

错误是:

类、结构或接口成员声明中的标记“{”无效

无效的表达式术语 '='

类型或命名空间定义,或预期的文件结尾

【问题讨论】:

  • 去掉分号和空格“Source = AppLoginUsername;”
  • 如果我这样做: 我得到同样的错误加上;预计
  • 一般编译错误应该告诉你具体的文件和行号
  • 如何将模型(viewmodel)与视图绑定?
  • 你想访问什么?如果你想访问Entry,你可以给它一个不绑定的名字。如果要捕获条目的值,可以直接获取entry.text,无需绑定。 AppLoginUserName 在这里有什么用?

标签: xamarin data-binding xamarin.ios


【解决方案1】:

你为什么不给它一个名字,然后绑定文本呢? 例如 x:Name=“User” Text=“{Binding AppLoginUsername}”...

【讨论】:

  • 如果我这样做... ,它确实编译没有错误,但我无法访问登录时在教科书中输入的值。所以这不起作用.. . 私有异步无效 getCustBalance() { HttpClient 客户端 = 新 HttpClient();字符串 x = uLoginUsername.Text; int custid = GetCustomerId(x);
  • 只需将模式添加到 twoway,C# 中的 Text="{Binding AppLoginUsername, mode=TwoWay}" 使用属性而不是控件。因此,您将使用 GestCustomerId(AppLoginUsername)。建议你看看 MVVM
【解决方案2】:

好吧,根据 cmets,我认为您的问题是您可以在登录页面中获取 AppLoginUserName,但是,您想在另一个页面(另一个视图)中使用 AppLoginUserName

我会给你几个建议:

1.您可以将值传递给您要使用的页面。

2.使用Xamarin.Essentials: Preferences

用户登录后,您可以保存AppLoginUserName

using Xamarin.Essentials;

Preferences.Set("AppLoginUserName", "value");

另一个视图你想使用的地方,你可以得到值:

var myValue = Preferences.Get("AppLoginUserName", "default_value");

当用户退出或在其他情况下时,从首选项中删除密钥:

Preferences.Remove("my_key");

您可以参考:essentials/preferences

【讨论】:

    【解决方案3】:

    您无法绑定名称。名称是生成代码的东西,您不能即时更改变量的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-03
      • 2016-06-26
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2020-08-27
      相关资源
      最近更新 更多