如何在xamarin表单中选择listview项目时打开另一个页面?

时间:2016-06-04 00:46:06

标签: c# xaml xamarin xamarin.android xamarin.forms

您好我正在开发使用xamarin构建的移动应用程序表格主页面是一个列表视图,其中列出了类别。我需要发生的是当用户点击列表视图中的某个项目时,它会在应用程序中打开新页面,而下面是xaml代码:

newline character

所以我的问题是什么代码beind使数学提交带你到MathToolsHome类?等等?

任何帮助都会很棒!

提前感谢一百万! :)

2 个答案:

答案 0 :(得分:5)

为Listview定义ItemSelected:

 <ListView HasUnevenRows="true"
           ItemSelected="OnItemSelected">

然后编写处理程序代码:

    private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var item = e.SelectedItem;
        // Your code here
    }

答案 1 :(得分:2)

你可能正在寻找TapGestureRecognizer,你在调用InitializeComponent()之后在SchoolTools.HomePage的构造函数中设置了它:

var mathTapRecognizer = new TapGestureRecognizer();
mathTapRecognizer.Tapped += async delegate {
    // Whatever you need to do here, like
    await Navigation.PushAsync(new MathToolsHome());
};
Math.GestureRecognizers.Add(mathTapRecognizer);

假设MathToolsHome是某种页面。

修改

添加XAML解决方案......

通过你拥有XAML的方式,我概述的方法将不会起作用,因为你无法改变DataTemplates成员的设置(这就是为什么编译器将Math绑定到System.Math而不是布局中的标签)。

最简单的方法是将TapGestureRecognizer添加到您的XAML中,同时调用您的代码隐藏。

XAML:

<Label x:Name ="Math" Text="Math" HorizontalOptions="Center">
  <Label.GestureRecognizers>
    <TapGestureRecognizer Tapped="Math_Clicked"/>
  </Label.GestureRecognizers>
</Label>

在您的代码中:

public async void Math_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new MathToolsHome());
}

我用纯C#而不是XAML编写了更多的DataTemplate实现,但这种方法应该可行。