gpt4 book ai didi

xamarin - Xamarin 表单上的 FindViewById?

转载 作者:行者123 更新时间:2023-12-03 13:39:24 25 4
gpt4 key购买 nike

我需要某种方法来通过其 ID 查找 View /对象。我听说过 FindViewById 函数,但它没有出现在我的 ContentPage 类中。我在哪里可以找到它?

上下文:我有一个带有按钮的 ListView。我不知道有多少个按钮。当用户单击这些按钮之一时,我会获取其 ID 并全局存储。我想要完成的是找到这个特定的按钮,它的 id 存储在变量中。

<StackLayout x:Name="chooseObjectButtons">
<ListView x:Name="SlotsList" ItemsSource="{Binding .}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout>
<Button Text="{Binding Text}" BackgroundColor="Gray" Clicked="SlotChosen" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>

最佳答案

将 XAML 更改为:

<ListView ItemsSource="{Binding Slots}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout>
<Button Text="{Binding Title}" BackgroundColor="Gray" Clicked="Handle_Clicked" Command="{Binding Select}" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

handle 点击:

private Button LastButtonClicked;

void Handle_Clicked(object sender, System.EventArgs e)
{
if (LastButtonClicked != null)
{
// Change background here
}
LastButtonClicked = (Button)sender;
// Do stuff here.
}

要处理每个按钮的特定命令,请使用:

public List<SlotsButtons> Slots
{
get
{
return new List<SlotsButtons>
{
new SlotsButtons
{
Title = "T1",
Select = new Command(()=>{
// do stuff here when clicked.
})
},
new SlotsButtons
{
Title = "T2",
Select = new Command(()=>{
// do stuff here when clicked.
})
}
};
}
}

注意:初始问题答案。

在 Xamarin Forms 中,类 ContentPagePartial class .
一部分是从 XAML 自动生成的,另一部分表示背后的代码。
XAML 生成 Partial class具有按名称查找 View 的代码。

正确的名称是 FindByName并且您不需要在分部类中使用它,因为它已经在生成的分部类中创建。

如果您想访问背后代码中的 View ,只需在 XAML 中给它一个名称。
有一个 XAML 示例:
<Button x:Name="button" ></Button>

在你后面的代码中,你可以执行以下操作:
button.BorderWidth = 3;

如果出于某种原因仍然需要查找 View ,请执行以下操作:
var button = this.FindByName<Button>("button");

关于xamarin - Xamarin 表单上的 FindViewById?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37754011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com