【发布时间】:2021-08-06 19:49:39
【问题描述】:
在我的 Xamarin 应用程序中,我收到了 Dynamic Form from Server & add in XML Entry Control。
有多个Entry并且它们是动态的(它可以是任何数字),因为我不知道数字和它们的名字,我无法在ViewModel中编写可绑定属性来获取进入的价值。
有没有办法从动态表单中获取Entry的值?
视图模型
编写从 API 获取动态字段的代码
Uri uri = new Uri(string.Format("http://example.com/entry"));
HttpClient httpClient = new HttpClient(new NativeMessageHandler());
HttpResponseMessage response = await httpClient.GetAsync(uri);
string entries = await response.Content.ReadAsStringAsync();
RootObject list = JsonConvert.DeserializeObject<RootObject>(entries);
form = new List<Form>();
form = list.data.FirstOrDefault().form.ToList();
public List<Form> forms { get; set; }
将 json 转换为类,然后获取 json 数据列表。
public class Rootobject
{
public bool success { get; set; }
public Datum[] data { get; set; }
}
public class Datum
{
public Form[] form { get; set; }
}
public class Form
{
public string label { get; set; }
public string name { get; set; }
public string type { get; set; }
public int max_length { get; set; }
public bool required { get; set; }
}
【问题讨论】:
-
为什么不将 Entry Text 属性绑定到
Form类上的属性? -
当它们是动态的(我不知道有名称和数字)时,我将如何获取文本(在应用程序的其他地方,当我想获取用户在 Entry 中输入的值时,在Viewmodel,我必须使用 Bindable Properties).. 但是我该怎么做呢?
-
在 Form 类上创建一个名为“Value”的属性。将 Entry 的 Text 属性绑定到 Value。然后在代码的其他地方,您可以通过引用该列表来获取值
-
想象一个绑定到“表单”的 ListView,并显示一个“名称”。你会怎么做?
Form类(模型)中将有一个name属性。这与您的 BindableLayout 所需的绑定相同,无论是标签还是内部条目。 -
我发布了一个小例子“在你的 Form 类上创建一个名为“Value”的属性”。请看一下,这是你想要我做的吗?
标签: c# .net xml xamarin xamarin.forms