c# - 如何刷新 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);
上面的命令似乎有效,但是,我无法实时看到更改,所以我应该如何刷新列表视图/数据视图?
解决方案
为此目的使用 observableCollection。
在您的情况下,List 变量应该是ObservableCollection<YourObject>
See this link 以获取更多信息。
https://www.c-sharpcorner.com/UploadFile/e06010/observablecollection-in-wpf/
推荐阅读
- javascript - 在 Javascript 块中将 PHP 插入 HTML
- javascript - 通过部分匹配javascript匹配两个对象
- reactjs - immer.js 合并嵌套对象
- java - 在方法中使用泛型谓词和函数
- android - 如何在 Fragments 中实现 OnClick 和 OnFocusChanged 监听器
- r - R:根据列名和行名提取值
- python - Google-Kick Start,ROUND-A,分配:- 跳过测试集
- ionic-framework - 如何在 Ionic 的应用程序组件中触发自定义事件?
- c# - C#:基于其他类中的事件在类中引发事件
- c - 在 ubuntu linux db2 上的 c 中预编译嵌入式 sql 不起作用