【问题标题】:Get data from selected item in ListView从 ListView 中的选定项目中获取数据
【发布时间】:2015-02-18 09:33:10
【问题描述】:

我有以下 C# 代码为列表视图生成项目:

//function that generated items for list view

 results = //An array

                    foreach (var item in results)
                    {
                        var nameStr = item.FirstName + " " + item.LastName;
                        var descriptionStr = item.Email;
                        IconTextGrid.Items.Add(new { Name = nameStr, Description = descriptionStr });

                }

还有 XAML:

<Page.Resources>
    <DataTemplate x:Key="IconTextDataTemplate">
        <StackPanel Orientation="Horizontal" Width="220" Height="60" Background="#FF7CC6FF">

            <StackPanel Orientation="Vertical" VerticalAlignment="Center">
                <TextBlock Text="{Binding Name}" Margin="10,0,0,0" Width="170" Height="20" TextTrimming="WordEllipsis"/>
                <TextBlock Text="{Binding Description}" Margin="10,0,0,0" Width="170" Height="20" TextTrimming="WordEllipsis"/>
            </StackPanel>
        </StackPanel>
    </DataTemplate>
</Page.Resources>

<ListView x:Name="IconTextGrid"  SelectionMode="Multiple" ItemTemplate="{StaticResource IconTextDataTemplate}" Height="400"  Grid.Row="5" Margin="40,20,40,10" HorizontalAlignment="Stretch" Foreground="White" SelectionChanged="IconTextGrid_SelectionChanged">
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <ItemsWrapGrid MaximumRowsOrColumns="6"/>
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                </ListView>

和:

private void SendRequests_Click(object sender, RoutedEventArgs e)
        {
            string emailAdress;
            for (int i = 0; i < IconTextGrid.SelectedItems.Count; i++)
            {
                //I need to get the description of the selected items
            }
        }

我的问题是如何获取生成项目中描述字段的值? 谢谢

【问题讨论】:

  • 不清楚你在问什么。你在哪里需要Description?你想用它做什么?
  • 描述在这里:Text="{Binding Description}" 我更新了我的代码
  • 什么类型的项目。电子邮件?
  • 数组中包含字符串的单元格

标签: c# xaml listview listviewitem


【解决方案1】:

您可以像这样创建自定义类型:

class MyType
{
     string Name { get; set; }
     string Description { get; set; }
}

然后将代码更改为:

IconTextGrid.Items.Add(new MyType{ Name = nameStr, Description = descriptionStr });

现在你可以得到描述了:

for (int i = 0; i < IconTextGrid.SelectedItems.Count; i++)
        {
            var item = (MyType)IconTextGrid.SelectedItems[i];
            string description = item.Description;
        }

【讨论】:

    【解决方案2】:

    您正在使用匿名类型的列表框中的项目:

    IconTextGrid.Items.Add(new { Name = nameStr, Description = descriptionStr });
    

    你应该声明一个类:

    public class MyItem
    {
        public string Name { get; set; }
        public string Description { get; set; }
    }
    

    改用这个类:

    IconTextGrid.Items.Add(new MyItem { Name = nameStr, Description = descriptionStr });
    

    您可以获取SelectedItem 并将其转换为MyItem

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多