根据其他页面中的复选框显示名称列表 - Xamarin Forms

Display a list of names based on checked boxes in other page - Xamarin Forms

我有一个带有很多标签和复选框的视图,它基本上是用户的问题列表,如果用户回答是,他们会选中复选框,否则他们不会。我有另一个与第一个视图相关的视图,它应该获取并显示选中了哪些复选框。例如:

<Label Text="You have fever?" />
<CheckBox x:Name="fever" />

<Label Text="You have a running nose?" />
<CheckBox x:Name="running_nose" />

<Label Text="You are feeling dizzy?" />
<CheckBox x:Name="dizzy" />

在另一页上,我想显示在输入字段中选中的值。假设用户检查发烧和头晕。在另一页上它会显示如下内容:

"You marked *fever*, *dizzy*. Is that right?"

我该怎么做?我知道我可以使用数据绑定。但不确定如何。在我的实际应用程序中,我有大约 10 个字段,我需要在另一页上显示已标记的字段。我也在考虑不显示具有这些值的条目,而是为每个选中的框创建一张卡片(我的应用程序要复杂得多,症状只是一个例子)。

您需要对数据建模

创建一个像这样的class

public class Symptom
{
  public string Name { get; set; }
  public string Prompt { get; set; }
  public bool Selected { get; set; }
}

然后用数据创建一个列表

List<Symptom> symptoms = new List<Symptom>();

symptoms.Add(new Sympton { Name = "fever", Prompt = "You have fever?" });
// repeat for others

然后您可以在 ListView 或 CollectionView 中显示此数据

<ListView x:Name="lstSymptoms">
<ListView.ItemTemplate>
    <DataTemplate>
        <ViewCell>
            <StackLayout>
                <Label Text="{Binding Prompt}" />
                <Checkbox Selected="{Binding Selected" />
            <StackLayout>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate>
<ListView>

然后在后面的代码中,将您的模型分配给列表

lstSymptoms.ItemSource = symptoms;

当用户完成选择后,您可以使用 LINQ 创建仅包含所选症状的列表,并将其传递到下一页