如何在wpf mvvm中保存成功后自动更新listview中的选定行

时间:2016-04-14 07:13:28

标签: wpf xaml listview mvvm

我在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中实现这一目标?

1 个答案:

答案 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);
}