[英]Xamarin Forms Clear All Entries
我使用了@Bassies 代码,经过修改以动态清除布局中的条目。 因此,您不需要在后面的代码中添加引用。 此方法将遍历每个项目和明文。 因此,在比较@Bassies 方式时,这种动态方法将花费更多时间来处理。 但这将是微不足道的时间,因为单个页面视图不会包含大量视图(例如 10000 或更多)
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
var child = this.Content as Layout;
if (child != null)
{
ProcessLayoutChildren(child);
}
}
public void ProcessLayoutChildren(Layout child)
{
foreach (var item in child.Children)
{
var layout = item as Layout;
if (layout != null)
{
ProcessLayoutChildren(layout);
}
else
{
ClearEntry(item);
}
}
void ClearEntry(Element entryElement)
{
var entry = entryElement as Entry;
if (entry != null)
{
entry.Text = string.Empty;
}
}
}
}
我没有对此进行测试,但它应该可以工作
您可以遍历布局中的所有子视图并清除其中的条目。
如果您使用的是 XAML,请为您的布局命名,以便您可以在后端代码中访问它
<StackLayout x:Name="MyForm">
<Label Text="Anything"/>
<Entry />
<Entry />
<Entry />
<Button Text="Clear" x:Name="Clear" Clicked="Clear_Clicked" />
</StackLayout>
然后在你的后端:
private void Clear_Clicked(object sender, EventArgs e)
{
foreach (View view in MyForm.Children)
{
if(view is Entry)
{
(view as Entry).Text = String.Empty;
}
}
}
也许不是正确的方法,而是它如何在 1 Page 上工作的示例。
您可能想更改它,但请了解它是如何工作的
<StackLayout>
<Frame BackgroundColor="#2196F3" Padding="24" CornerRadius="0">
<Label Text="Clear All" HorizontalTextAlignment="Center" TextColor="White" FontSize="36"/>
</Frame>
<Entry x:Name="Nr1" />
<Entry x:Name="Nr2" />
<Entry x:Name="Nr3" />
<Button Text="Clear" Clicked="Button_Clicked" />
</StackLayout>
并制作一个列表并为条目命名,我使用 Nr1、Nr2 和 Nr3,但仅作为示例。
public partial class MainPage : ContentPage
{
List<Entry> entry = new List<Entry>();
public MainPage()
{
InitializeComponent();
entry.Clear();
entry.Add(Nr1);
entry.Add(Nr2);
entry.Add(Nr3);
}
private void Button_Clicked(object sender, EventArgs e)
{
foreach (var entry in entry)
{
entry.Text = "";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.