Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ListView获取数据_C#_Wpf_Xaml_Listview_Selecteditem - Fatal编程技术网

C# 从ListView获取数据

C# 从ListView获取数据,c#,wpf,xaml,listview,selecteditem,C#,Wpf,Xaml,Listview,Selecteditem,我已经在XAML中创建了一个列表视图,但我不知道如何获取所选行的数据。有人能帮我吗 这是我的XAML: <ListView x:Name="myListView" Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged"> <ListView.View> <GridView> <GridViewColumn Header="Tes

我已经在XAML中创建了一个
列表视图
,但我不知道如何获取所选行的数据。有人能帮我吗

这是我的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
完成上述步骤后,您应该可以在
列表视图中看到数据


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

下面是一个例子

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

谢谢,但我知道如何添加数据。我需要知道如何通过代码获取选定行的数据我想我误解了这个问题。您可以将Property与此代码一起使用,以获取所选行的完整数据:myListView.SelectedItems[0];如何仅获取一列的数据?您需要强制转换它<代码>((Test)myListView.SelectedItems[0]).test1
以及我必须使用哪个类而不是Test来强制转换它?我这样添加数据:myListView.Items.add(new{test1=”“,test2=“”,test3=“”});
<ListView x:Name="myListView" DataContext={Binding Data} Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged" >
<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}" >
object item = new {test1="test1a", test2="test2a", test3="test3a"};
var propertyInfo = item.GetType().GetProperty("test1"); // propertyInfo for test1
var test1Value = propertyInfo.GetValue(item, null);