簡體   English   中英

如何檢查 ListView 中 ListItem 的哪個字符串資源被單擊?

[英]How to check which string resource of a ListItem in a ListView was clicked?

有沒有辦法檢查 ListView 項目點擊的字符串資源而不是 ListView 的索引(這通常在教程中演示)? 例如,我有一個包含 3 個項目的ListView :“項目 A”、“項目 B”和“項目 C”。 如果點擊的ListView項的字符串資源是“項A”,做點什么。

主頁 class

public sealed partial class MainPage : Page
{
    private List<ListItemMain> mainItems;

    public MainPage()
    {
        this.InitializeComponent();

        gridItemMains = MainItemManger.GetGridItems();
    }

    private void ListView_ItemClick(object sender, ItemClickEventArgs e)
    {

    }
}

項目 class

public class ListItem
    {
        public string Name { get; set; }
    }

    public class BookManger
    {
        public static List<Book> GetListItems()
        {
            var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();

            var items = new List<Book>
            {
                new Book { Name = resourceLoader.GetString("ItemA") },
                new Book { Name = resourceLoader.GetString("ItemB") },
                new Book { Name = resourceLoader.GetString("ItemC") }
            };

            return items;
        }
    }

XAML

<Page
    x:Class="My_App.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:data="using:My_App.Models"
    mc:Ignorable="d">

        <ListView ItemsSource="{x:Bind listItems}" ItemClick="ListView_ItemClick">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="data:ListItem">
                    <StackPanel>
                        <TextBlock Text="{Binding Book}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
</Page>

您需要將IsItemClickEnabled屬性設置為 true 才能從ListView獲取ItemClick事件。

有關ItemClick 事件,請參閱文檔頁面。

這是更新后的 XAML 看起來像:

<ListView ItemsSource="{x:Bind listItems}" ItemClick="ListView_ItemClick" IsItemClickEnabled="True">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="data:ListItem">
            <StackPanel>
                <TextBlock Text="{Binding Book}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

和事件處理程序代碼:

void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
    // TODO: Add your code by accessing e.ClickedItem here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM