【问题标题】:Navigation in between pages using ListView in UWP在 UWP 中使用 ListView 在页面之间导航
【发布时间】:2016-07-21 19:07:55
【问题描述】:

我正在尝试使用列表项在页面之间导航,但它不起作用。我的主页是 MainPage.xaml,当我单击列表视图中的 Aba 图像时,我想导航到“xyz”

这是我的代码:

namespace abc
{

public sealed partial class MainPage : Page
{
    ObservableCollection<Class1> list1 = new ObservableCollection<Class1>();
    public MainPage()
    {
        this.InitializeComponent();
        Filldata();
    }

    void Filldata()
    {
        list1.Add(new Class1 { name = "Aba", image = "ms-appx:///images/aba.png" });
        list1.Add(new Class1 { name = "Al", image = "ms-appx:///images/al.png" });
    }

    private void itemclicked(object sender, ItemClickEventArgs e)
    {
        var nme = (Class1)e.ClickedItem;

        switch (nme.name)
        {
            case "Aba":
                Frame.Navigate(typeof(xyz),null);
                break;
        }
    }
}
}

MainPage.xaml

<ListView x:Name="list" ItemClick="itemclicked">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Height="100" Width="100" Source="{Binding image}"></Image>
                    <TextBlock Text="{Binding name}" HorizontalAlignment="Center"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Class1.cs

class Class1
{
    public String name { get; set; }
    public String image { get; set; }
}

【问题讨论】:

  • 我认为我们需要更多信息才能继续。单击列表项时的当前行为是什么?它是否真的进入了 Navigate 方法调用,但没有导航? Dows 类“xyz”从页面继承?
  • 不是很清楚,为什么你不调用重载Frame.Navigate(TypeName)。无论如何,您忽略了一个返回值。
  • 我刚刚测试过,问题是没有“启用”的列表项被点击...你需要添加 IsItemClickEnabled="True" 到你的ListView,我写了答案,你可以看到它在答案部分。

标签: c# xaml listview navigation uwp


【解决方案1】:

您的 ListView 控件存在问题,主要原因是您在 XAML 中的 ListView 中没有此属性:

IsItemClickEnabled="True"

因此,为了解决您的问题,请在 XAML 页面的 ListView 中添加此属性 IsItemClickEnabled="True",如下所示:

 <ListView x:Name="list"
           ItemClick="itemclicked"
           IsItemClickEnabled="True">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Height="100"
                           Width="100"
                           Source="{Binding image}"></Image>
                    <TextBlock Text="{Binding name}"
                               HorizontalAlignment="Center"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
   </ListView>

您的代码在导航方法和其他方面很好,但您需要“启用”要单击的项目,因此添加该属性以便可以将它们与单击事件一起使用。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多