vm层主要代码:
pravite _displayData;
public ObservableCollection<CompareDiplayData> DisplayData
{
get { return _displayData; }
}
_displayData中的数据会变化
m层
public class CompareDiplayData : INotifyPropertyChanged
{
private string _key;
public string Key
{
set
{
_key = value;
this.Changed("Key");
}
get
{
return _key;
}
}
private string _projectData;
public string ProjectData
{
set
{
_projectData = value;
this.Changed("ProjectData");
}
get
{
return _projectData;
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void Changed(string PropertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
v层:
<ListView HorizontalAlignment="Left" Name="comparelistview" VerticalAlignment="Top" Width="600" Height="340" ItemsSource="{Binding DisplayData}">
<ListView.View>
<GridView>
<GridViewColumn Width="150" Header="Key"
DisplayMemberBinding="{Binding Path=Key}" />
<GridViewColumn Width="150" Header="Project Data"
DisplayMemberBinding="{Binding Path=ProjectData}" />
</GridView>
</ListView.View>
</ListView>
不知道到为什么数据就是显示不了。
由于DisplayData是一个对象,是引用类型,也就是一个地址,除非你在后台设置DisplayData=null,再赋值为新对象,否则前台检测不到它的item有任何变化。
要实现DisplayData的各个属性变化通知前台,需要添加类似如下的代码,
void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)也就是说你要通过手工的代码实现DisplayData的成员的变化绑定到整个对象的变化上面。
WPF的MVVM中使用ObservableCollection无法更新listview中的数据怎 ...
由于DisplayData是一个对象,是引用类型,也就是一个地址,除非你在后台设置DisplayData=null,再赋值为新对象,否则前台检测不到它的item有任何变化。要实现DisplayData的各个属性变化通知前台,需要添加类似如下的代码,void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if ...
WPF,中TreeView 更新节点不刷新UI的问题
虽然没有看过你的代码和提到的那篇文章,但我觉得增删节点的问题解决只是因为你把List集合换成了ObservableCollection集合的原因,因为INotifyPropertyChanged这个接口的作用,所以添加删除节点时能够通知到客户端并发生改变,而你更新节点数据的操作就不同了,节点数据是一个自定义的类吧,它实现了INotifyPropertyC...
WPF DataGrid数据源在发生改变时会触发什么事件
WPF中不推荐使用DataGrid的事件去处理 在MVVM模式中,使用数据绑定,使用INotifyPropertyChanged接口,数据源更改时触发消息。ObservableCollection在数据源中的项更改时也能触发消息 如需要项中的某个字段更改触发消息,将数据源的类继承INotifyPropertyChanged接口,使特定字段更改时触发消息。
...了数据源中的一行,但是在UI界面用没有删除对应的行,怎么回事...
这是由于你的数据源不是感知类型所造成的,这需要你手动刷新界面,但这样就放弃了WPF数据性绑定的优点。 你可把 tagsource 原来的类型List<Tag> 改变为 ObservableCollection<Tag> , 这样在你删除数据源中的一行时, ObservableCollection类型的数据源会自动通知UI控件数据源已经变更了。不用象jielizao110所...
C# winform 和WPF 中级面试题整理
16、托管资源与非托管资源:C#的托管资源自动GC释放,非托管资源需手动释放。17、WPF与MVVM理解:WPF是Windows Presentation Foundation,MVVM模型包含Model、ViewModel、View。18、SQL与存储过程,使用存储过程提高性能、简化代码、增强安全性。19、反射用于获取类型元数据,动态生成实例、调用方法。20、流处理...
在WPF使用中读取一个配置文件获得一个结构体list,然后将数据绑定到Co...
你List 想读配置文件的话Student 这个类就跟着变下,wpf基于属性绑定,不是事件驱动,想入门的话建议看下[深入浅出WPF完整版]刘铁猛出的,目前国人出的wpf就他的写的不错的书 还有你的配置文件应该是xml格式文件,要新建个MeterList的类 要用 System.Xml.XmlDocument这个类来读配置文件,来填冲Meter...
WPF DataGrid排序后,绑定数据的更新问题。
this.RaisePropertyChanged("GoodsSummaryList");把这一句在你的按键中执行一次 为了做到,把你的按键命令也得写在viewmodel里
【译】MVVM 模式
MVVM模式的动机包括解决Windows Forms、WPF、Windows Phone等开发技术提供的默认体验中出现的复杂维护问题。这些问题包括UI控件和业务逻辑之间的紧密耦合,这增加了UI修改的成本,并增加了对此类代码进行单元测试的难度。使用MVVM模式实现应用程序的主要动机包括以下方面:提供清晰的关注点分离,使用户界面控件和...
WPF的MVVM中使用ObservableCollection无法更新listview中的数据怎 ...
由于DisplayData是一个对象,是引用类型,也就是一个地址,除非你在后台设置DisplayData=null,再赋值为新对象,否则前台检测不到它的item有任何变化。要实现DisplayData的各个属性变化通知前台,需要添加类似如下的代码,void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if ...