获取ListView中的项目名称

时间:2017-04-30 09:57:08

标签: c# uwp

我想在 TextBlock 中找到ListView项目的名称,我真的需要:当我点击项目时,TextBlock中将是该项目的名称。例如:当我(运行)应用程序单击ListView中的项目时,该名称将位于该TextBlock中。 ListView中的项目名称也在运行应用程序时声明。谢谢!我只有这个简单的代码:

private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
} 

4 个答案:

答案 0 :(得分:2)

如果您想使用ItemClick事件,可以使用ItemClickEventArgs.ClickedItem获取对所点击项目的引用。

如果您通过XAML添加ListViewItem,您应该能够将ItemClickEventArgs.ClickedItem转换为ListViewItem中的根元素。

例如:

<ListView Name="MyListView" ItemClick="ListView_ItemClick" IsItemClickEnabled="True">
    <ListViewItem>
        <TextBlock Name="Text1" Text="Text1"></TextBlock>
    </ListViewItem>
    <ListViewItem>
        <TextBlock Name="Text2" Text="Text2"></TextBlock>
    </ListViewItem>
</ListView>

背后的代码:

private void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
    var textBlock = e.ClickedItem as TextBlock;
    Debug.WriteLine(textBlock.Text);
}

如果您将集合绑定到ListView.Source,我们应该能够将ItemClickEventArgs.ClickedItem转换为集合的对象。

例如:

<ListView Name="MyListView" ItemClick="ListView_ItemClick" IsItemClickEnabled="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding }"></TextBlock>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

背后的代码:

private ObservableCollection<string> Items;

public MainPage()
{
    this.InitializeComponent();
    Items = new ObservableCollection<string>();
    Items.Add("Text1");
    Items.Add("Text2");
    MyListView.ItemsSource = Items;
}

private void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
    var text = e.ClickedItem as string;
    Debug.WriteLine(text);
}

答案 1 :(得分:2)

试试这个:

private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
     myTextBlock.Text =((Control)sender).Name;
}

答案 2 :(得分:0)

很难理解你究竟在谈论什么,但看起来你可能正在寻找的是:

private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
     myTextBlock.Text = e.DataContext as string;
}

如果您没有将纯字符串添加到列表视图,而是添加自定义对象,则可以执行myTextBlock.Text = (e.DataContext as myClass).myString

答案 3 :(得分:0)

首先,请告诉我们有关如何将项目绑定到ListView的更多详细信息 假设你有:

    <ListView x:Name="MyListView"
              IsItemClickEnabled="True" 
              ItemsSource="{x:Bind MyItems}"
              ItemClick="MyListView_ItemClick">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="data:Item">
                <TextBlock x:Name="MyTextBlock" Text="{x:Bind Name}"></TextBlock>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在其背后的代码中:

    private List<Item> MyItems;
    //Fill items of your need into this List

我的方法是创建您在ListView中填充的每个项目的标识符。标识符可以是您想要的任何类型。在这里我使用枚举。请务必为上面Category中的每个项目设置MyItems

    public class Item
    {
        public string Name{ get; set; }
        public ItemCategory Category { get; set; }
    }

    public enum ItemCategory
    {
        Type1,
        Type2
    }

MyListView_ItemClick方法的主要工作:

     private void MenuItemsListView_ItemClick(object sender, ItemClickEventArgs e)
    {
        var clickedItem = (Iteme)e.ClickedItem;
        switch (clickedItem.Category)
        {
            case ItemCategory.Type1:
            { 
                //Do your works here
                break;
            }

            case ItemCategory.Type2:
            { 
                //Do your works here
                break;
            }
        }
    }