在更改订书钉的值后将输入字段动态添加到stacklayout后刷新UI

时间:2018-07-24 13:24:04

标签: xaml xamarin xamarin.forms

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

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

xaml页面

<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);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

好吧,我发现在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>

答案 1 :(得分:0)

我有类似的问题。更改布局后(在Android <4.3上),没有刷新ScrollView内部深处的元素大小。

指定ScrollView的高度有所帮助(为XAML中的ScrollView指定了以下任意一项):

VerticalOptions="FillAndExpand"
HeightRequest="100"