我在WPF中使用listview,如下所示:
<ListView x:Name="lv" ItemsSource="{Binding Path=xyz}" SelectedItem="{Binding SelectedRow}" >
<ListView.View>
<GridView>
<GridViewColumn Width="50" DisplayMemberBinding="{Binding }" />
<GridViewColumn Width="140" DisplayMemberBinding="{Binding }" />
<GridViewColumn Width="140" DisplayMemberBinding="{Binding }" />
<GridViewColumn Width="120" DisplayMemberBinding="{Binding }" />
</GridView>
</ListView.View>
</ListView>
单击表单中的“保存”时,所选行应跳转到下一行。类似于currentselectedrow + 1。
如何在WPF MVVM中实现这一目标?
答案 0 :(得分:3)
首先,我建议使用SelectedIndex而不是SelectedItem。
<ListView x:Name="lv" ItemsSource="{Binding Path=xyz}" SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}" />
然后在Viewmodel中的Save Method中,您可以简单地将SelectedIndex增加1(记住检查索引是否不是最后一个)
private void Save()
{
// Your Save Logic...
if (SelectedIndex + 1 < xyz.Count)
SelectedIndex++;
}
如果你想保留SelectedItem,那么你可以做类似的事情,比如
private void Save()
{
//Your Save Logic...
var index = xyz.IndexOf(this.SelectedItem);
if (index - 1 < xyz.Count)
SelectedItem = xyz.ElementAt(index + 1);
}