xaml - 将条目字段动态添加到堆栈布局后刷新 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);
}
}
}
解决方案
好的,我发现在 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>
推荐阅读
- database - postgresql-heroku:无法创建数据库
- unity3d - 协程倒数计时器非常慢
- html - div宽度不随响应式css而变化
- flutter - 如何在颤动中获得设备的总内存大小?
- r - 将列名作为新行添加到 R 中的 .dat 文件
- reactjs - 使用父组件中的按钮调用子组件中的函数
- google-cloud-platform - 如何使用 GCP 控制台启用 Cloud Billing 导出?
- django - Django 没有捕获来自 Traefik 的请求
- r - R dplyr 在多列上过滤字符串条件
- html - 为什么此HTML 重定向到文件而不是下载?