首页 > 解决方案 > 将条目字段动态添加到堆栈布局后刷新 UI

问题描述

我有一个步进器,我想在值递增或删除值递减的条目时添加新的输入字段,我设法做到了,但在步进器的值更改后 UI 不会直接刷新(我需要点击其他首先是 UI 元素)然后字段将出现,在单击其他 UI 元素后,步进器将正常工作(添加和删除功能),我不知道为什么会这样?!.

编辑:看起来问题在于滚动视图..如果我删除它,新字段将直接添加或删除..但仍然不知道为什么。

xml 页面

<ScrollView>
    <StackLayout x:Name="StackLayout">
        <Label Text="عدد العناصر المراد اضافتها (اقصى عدد في المرة الواحدة 30)"></Label>
        <Stepper Maximum="30"
                 Minimum="2" 
                 Increment="1" 
                 ValueChanged="Stepper_OnValueChanged" 
                 Value="2"></Stepper>
        <StackLayout x:Name="EntryStackLayout">
            <Entry></Entry>
            <Entry ></Entry>
        </StackLayout>
    </StackLayout>
</ScrollView>

代码背后

public partial class AddNewListOfItemsPage : ContentPage
{
    public AddNewListOfItemsPage ()
    {
        InitializeComponent();
    }

    private void Stepper_OnValueChanged(object sender, ValueChangedEventArgs e)
    {
        if (e.NewValue > e.OldValue) 
        {
            EntryStackLayout.Children.Add(new Entry());
        }
        else
        {
            var childCount = EntryStackLayout.Children.Count;
            EntryStackLayout.Children.RemoveAt(childCount - 1);
        }
    }
}

标签: xamlxamarinxamarin.forms

解决方案


好的,我发现在 scrollView 之前添加一个 stackLayout 可以解决问题

 <StackLayout>
    <ScrollView>
        <StackLayout x:Name="StackLayout">
            <Label Text="عدد العناصر المراد اضافتها (اقصى عدد في المرة الواحدة 30)"></Label>
            <Stepper Maximum="30"
                     Minimum="2" 
                     Increment="1" 
                     ValueChanged="Stepper_OnValueChanged" 
                     Value="2"></Stepper>
            <StackLayout x:Name="EntryStackLayout">
                <Entry></Entry>
                <Entry ></Entry>
            </StackLayout>
        </StackLayout>
    </ScrollView>
</StackLayout>

推荐阅读