0

私はそのような単純なリストビューを持っています

<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.Add(new Coordinate() { Nr = 1, X = 230, Y = 530, Q = 2 });

しかし、どうすればデータにアクセスしたり変更したりできますか? これは私に次のプロパティを与えませんCoordinate:

CoordinateList.Items[i].
4

2 に答える 2

0

ListView はそのItemsコレクションをオブジェクトとして格納するため、項目にCoordinateオブジェクトとしてアクセスするには、まずそれを型にキャストする必要がありますCoordinate。例えば:

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

編集:より良い練習については、@ Mudsの回答も参照してください。

于 2015-10-20T08:26:37.313 に答える
0

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>

それで、

public ObservableCollection<Coordinate> MyNewList { get; set;}

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

MyNewList[I] --> will have your item. 
于 2015-10-20T08:30:39.390 に答える