从列表视图获取数据

本文关键字:数据 获取 视图 列表 | 更新日期: 2023-09-27 18:33:06

我在 XAML 中创建了一个ListView,但我不知道如何获取所选行的数据。谁能帮我?

这是我的 XAML:

<ListView x:Name="myListView" Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Test1" DisplayMemberBinding="{Binding test1}" Width="400" />
            <GridViewColumn Header="Test2" DisplayMemberBinding="{Binding test2}" Width="120"/>
            <GridViewColumn Header="Test3" DisplayMemberBinding="{Binding test3}" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>

从列表视图获取数据

你需要执行以下操作

1 设置数据结构:可以在代码隐藏或 XAML 中执行此操作。数据必须是集合类型,集合的类型具有 test1/test2/test3 数据成员。

var data = new ObservableCollection<Test>();  
data.Add(new Test {test1="abc", test2="abc2", test3="abc3"});  
data.Add(new Test {test1="bc", test2="bc2", test3="bc3"});  
data.Add(new Test {test1="c", test2="c2", test3="c3"}); 
Data = data

public ObservableCollection<Test> Data {get;set;}

通过属性公开数据

2 您需要将集合(在步骤 1 中的设置)分配给列表视图的 DataContext。(最好在 XAML 中,但可以在代码隐藏中完成)

<ListView x:Name="myListView" DataContext={Binding Data} Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged" >

3 还需要关联视图模型类(包含Data)来查看

<Application
    x:Class="BuildAssistantUI.App"
    xmlns:local="clr-namespace:MainViewModel"
    StartupUri="MainWindow.xaml"
    >
    <Application.Resources>
        <local:MainViewModel x:Key="MainViewModel" />
    </Application.Resources>

 <Window DataContext="{StaticResource MainViewModel}" >

完成上述步骤后,您应该会在ListView中看到数据。


关于如何从匿名类型的对象访问属性,这是通过反射完成的。

下面是一个示例

object item = new {test1="test1a", test2="test2a", test3="test3a"};
var propertyInfo = item.GetType().GetProperty("test1"); // propertyInfo for test1
var test1Value = propertyInfo.GetValue(item, null);