我有一个步进器,我想在值增加时添加新的输入字段,或在值减小时删除条目,我设法做到这一点,但是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);
}
}
}
答案 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"