如何在CS的网格内获取第一个标签的文本?

时间:2018-07-14 15:58:41

标签: xamarin xamarin.forms

我有以下XAML代码:

<ViewCell >
   <Grid VerticalOptions="CenterAndExpand"  x:Name="abc" Tapped="atiSelectValueX" >
      <local:StyledLabel Text="{Binding [0].Name}" HorizontalOptions="StartAndExpand" />
      <local:StyledLabel IsVisible="{Binding [0].IsSelected}" TextColor="Gray" HorizontalOptions="End" Text="x" />
   </Grid>
</ViewCell>

和此CS:

void atiSelectValueX(object sender, EventArgs e)
{
   var grid = sender as Grid;
   if (grid == null)
      return;

   var label = grid.Children. << trying to get the Text value

有人可以告诉我如何获取第一个标签的文本值吗?我尝试了一些使用LINQ并获得First或使用Where的想法,但是对于每一个尝试,我仍然无法添加.Text,因为我认为我需要将值转换为标签,以便可以使用label.Text < / p>

1 个答案:

答案 0 :(得分:1)

您可以通过is语句进行测试:

var label = grid.Children.FirstOrDefault(_ => _ is Label) as Label;
var textValue = label?.Text;

更新:或使用Linq的OfType<T>(感谢@Cheesebaron的评论)

var label = grid.Children.OfType<Label>().FirstOrDefault();