长春建站网站模板,凡科网站登录入口,做响应网站的素材网站,线上推销的方法文章速览 引言错误示范示例1示例2 坚持记录实属不易#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区#xff01; 谢谢~
引言
正确结构#xff1a;
Model —— ViewModel —— View
但很多时候#xff0c;很容易出现… 文章速览 引言错误示范示例1示例2 坚持记录实属不易希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区 谢谢~
引言
正确结构
Model —— ViewModel —— View
但很多时候很容易出现 View上直接引用Model数据的情况当这种情况发生时WPF将创建静态变量绑定源即ViewModel的强引用导致内存泄漏。
错误示范
出现的问题
此时由于 view上绑定的数据 是直接到 model 上获取的因此会造成内存泄漏的问题。
class Model
{public int Age{get;set;}public string Name{get;set;}public Model(){}
}public ViewModel
{public ObservableCollectionModel ItemSource new ObservableCollectionModel();.....
}xmal:ListViewListView.ViewGridViewGridViewColumn Header 年龄“ DisplayMemberBinding{Binding Age}/GridViewColumn Header 姓名 DisplayMemberBinding {Binding Name}”//GridView/ListView.View
/ListView示例1
在Xmal文件不变动的情况下可以 ViewModel 套用ViewModel形式。
是否调用Propertychanged实际上不重要重要是该类是从INotifyPropertyChanged派生的因为这回告诉WPF不要创建强引用。
class ViewModel2:INotifyPropertyChanged
{//propfull属性实现INotifyPropertyChangedprivate int age;public int Age{get{return age;}set{age value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Age)));}}public Model(){}
}public ViewModel
{public ObservableCollectionViewModel2 ItemSource new ObservableCollectionViewModel2();.....
}xmal:ListViewListView.ViewGridViewGridViewColumn Header 年龄“ DisplayMemberBinding{Binding Age}/GridViewColumn Header 姓名 DisplayMemberBinding {Binding Name}”//GridView/ListView.View
/ListView示例2
会极大的破坏mvvm结构在功能较小时可以试用 使用 T:ObservableCollection 结构 public ViewModel:ObservableCollectionViewModel
{
//此时具有列表的属性public int Age{get;set;}public string Name{get;set;}
}xmal.cs:ViewModel ViewModel new ViewModel();
//初始化时
listView.ItemsSource ViewModel;xmal:ListView x:Name listVeiwListView.ViewGridViewGridViewColumn Header 年龄“ DisplayMemberBinding{Binding Age}/GridViewColumn Header 姓名 DisplayMemberBinding {Binding Name}”//GridView/ListView.View
/ListView