C# 从ListView访问或更改数据

C# 从ListView访问或更改数据,c#,wpf,listview,itemcollection,C#,Wpf,Listview,Itemcollection,我有这样一个简单的列表视图 <ListView Name="CoordinateList" Margin="2" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding Nr}"

我有这样一个简单的列表视图

<ListView Name="CoordinateList" Margin="2"
                  Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Nr}"  Header="Nr." Width="40"/>
            <GridViewColumn DisplayMemberBinding="{Binding X}" Header="X" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Y}" Header="Y" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Q}" Header="Q" Width="40"/>
        </GridView>
    </ListView.View>
</ListView>
但我现在如何访问或更改数据?这并没有给我坐标的属性:

CoordinateList.Items[i].

ListView将其
集合存储为对象,因此要将项作为
坐标
对象访问,需要首先将其强制转换为
坐标
类型。例如:

var coord = (Coordinate) CoordinateList.Items[i];
...

编辑:有关更好的练习,请参见@Muds的答案。

我建议您将ListView与集合绑定,然后添加、删除或访问该集合中的对象

依靠UI控件从代码隐藏进行数据操作是不可取的

<ListView Name="CoordinateList" ItemsSource="{Binding MyNewList}" Margin="2"
                  Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Nr}"  Header="Nr." Width="40"/>
            <GridViewColumn DisplayMemberBinding="{Binding X}" Header="X" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Y}" Header="Y" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Q}" Header="Q" Width="40"/>
        </GridView>
    </ListView.View>
</ListView>

那么

公共ObservableCollection MyNewList{get;set;} 添加(新坐标(){Nr=1,X=230,Y=530,Q=2}) MyNewList[I]-->将拥有您的项目。
<ListView Name="CoordinateList" ItemsSource="{Binding MyNewList}" Margin="2"
                  Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding Nr}"  Header="Nr." Width="40"/>
            <GridViewColumn DisplayMemberBinding="{Binding X}" Header="X" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Y}" Header="Y" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Q}" Header="Q" Width="40"/>
        </GridView>
    </ListView.View>
</ListView>
public ObservableCollection<Coordinate> MyNewList { get; set;}

MyNewList.Add(new Coordinate() { Nr = 1, X = 230, Y = 530, Q = 2 })

MyNewList[I] --> will have your item.