首页 > 解决方案 > 如何刷新 Listview MVVM

问题描述

视图模型:

public DataView List { get { return _list; } set { _list = value; NotifyOfPropertyChange("List"); } }
         <...>
    DataTable dt = new DataTable();
                using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["X"].ConnectionString))
                {
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = new SqlCommand("Select * from Employees", connection);
                    adapter.Fill(dt);
                }
                List = dt.DefaultView;

XAML:

 <ListView  ItemsSource="{Binding List}">
        <ListView.DataContext>
            <local:TestViewModel/>
        </ListView.DataContext>

        <ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Login}" Header="Name" Width="100"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=password}" Header="Password" Width="100"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Permission}" Header="Permission" Width="110"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=locked_account}" Header="Is account locked" Width="150"/>
            </GridView>
        </ListView.View>
    </ListView>

我的命令:

  List.Delete(2);

上面的命令似乎有效,但是,我无法实时看到更改,所以我应该如何刷新列表视图/数据视图?

标签: c#wpfmvvm

解决方案


为此目的使用 observableCollection。
在您的情况下,List 变量应该是ObservableCollection<YourObject> See this link 以获取更多信息。
https://www.c-sharpcorner.com/UploadFile/e06010/observablecollection-in-wpf/


推荐阅读