【问题标题】:How can I create a label inside a ViewCell that when clicked will call a method?如何在 ViewCell 内创建一个标签,单击该标签将调用一个方法?
【发布时间】:2017-08-26 17:04:25
【问题描述】:

我有这个代码:

<ViewCell x:Name="ss" Height="50">
    <Grid VerticalOptions="CenterAndExpand" Padding="20, 0">
        <Label Style="{DynamicResource ListItemTextStyle}" HorizontalOptions="StartAndExpand" VerticalOptions="Center" Text="Category Group" />
        <Switch x:Name="ssSwitch" HorizontalOptions="End" VerticalOptions="Center" Grid.Column="1" Toggled="SsSwitch" />
    </Grid>
</ViewCell>

我想用另一行和一个带有“Clear Deck”文本的标签来扩展它

我怎样才能为此添加一个标签,当点击时会调用一个方法?

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    这里有一个简单的例子来说明如何做到这一点。您只需要添加一个带有TapGestureRecognizer 的标签。然后需要在后面的代码中实现ClearLabelTapped

    <ViewCell x:Name="ss" Height="50">
      <StackLayout Orientation="Vertical">
        <Grid VerticalOptions="CenterAndExpand" Padding="20, 0">
          <Label Style="{DynamicResource ListItemTextStyle}" HorizontalOptions="StartAndExpand" VerticalOptions="Center" Text="Category Group" />
          <Switch x:Name="ssSwitch" HorizontalOptions="End" VerticalOptions="Center" Grid.Column="1" Toggled="SsSwitch" />
        </Grid>
        <Label Text="Clear Deck">
          <Label.GestureRecognizers>
            <TapGestureRecognizer Tapped="ClearLabelTapped" />
          </Label.GestureRecognizers>
        </Label>
      </StackLayout>
    </ViewCell>
    

    后面的代码:

    public void ClearLabelTapped(object sender, EventArgs args) 
    {
       // This is called when you tab the "Clear Deck" label
    }
    

    请注意,使用视图模型和命令会是一种更好的方法(关注点分离),但我想保持简单。参考how to work with the TapGestureRecognizer的官方文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多