C# ListView可观察集合将不显示成员
无法使我的listview显示数据 XAMLC# ListView可观察集合将不显示成员,c#,wpf,listview,C#,Wpf,Listview,无法使我的listview显示数据 XAML 代码: private observedcollection\u computers列表; 公共观测收集计算机列表 { 得到 { 返回计算机列表; } 设置 { _ComputersList=值;NotifyPropertyChanged(“ComputersList”); } } 专用数据表(网络信息); 公共数据表网络信息 { 得到 { 返回网络信息; } 设置 { _NetworkCardInformation=值;NotifyPro
代码:
private observedcollection\u computers列表;
公共观测收集计算机列表
{
得到
{
返回计算机列表;
}
设置
{
_ComputersList=值;NotifyPropertyChanged(“ComputersList”);
}
}
专用数据表(网络信息);
公共数据表网络信息
{
得到
{
返回网络信息;
}
设置
{
_NetworkCardInformation=值;NotifyPropertyChanged(“NetworkCardInformation”);
}
}
奇怪的是,NetworkCard信息显示在我的datagrid中,这表明datacontext正在按预期工作
现在我的印象是一个可观的收集我不需要一个InotifyProperty更改,如果这是错误的,请建议
我还尝试了ItemsSource=“{Binding ComputersList}”
我在代码中加入了一个断点,以确保可观察的集合有数据,并且数据就在那里
- ComputersList计数=2 System.Collections.ObjectModel.ObservableCollection
- [0]{AdminUltimate.Model.NetworkModel.ComputerNode}对象{AdminUltimate.Model.NetworkModel.ComputerNode} ComputerName“ASUS-PC”字符串
谢谢您已将
显示成员路径
设置为计算机名称
,但对象
没有任何此类属性,因此它在视图中不显示任何内容
这可以通过删除DisplayMemberPath
进行验证,您将看到对象的完全限定类名,因为如果在ListBox上未设置ItemTemplate和DisplayMemberPath,则会对对象调用ToString()
因此,解决方案是将
observetecollection
更改为包含属性的更具体对象的类型ComputerName
,即observetecollection
错误印象。ObservableCollection实现INotifyCollectionChanged(非INotifyPropertyChanged)。OC通知插入和删除-而不是对现有项目的更改。尝试将ComputersList
属性声明为ObservableCollection
,而不是ObservableCollection
同意har07。NotifyPropertyChanged(“计算机列表”);不属于那里。ComputerNode需要NotifyPropertyChanged(“ComputerName”)@BARM-observateCollection
实现了INPC
和INCC
。然而,您的另一个断言是正确的,即底层对象中的任何属性更改都不会在GUI上刷新,因为该对象应该实现INPC
@RohitVats I stand corrected您知道他们正在寻找版主。我想如果你有时间,你会是一个很好的主持人。没关系,你没有必要的徽章。谢谢你。是的,我刚刚看到了。但是,以专业的态度工作,每天抽出时间,会有点乏味。我喜欢这样断断续续地退房,但就像你说的,我的徽章快用完了。因此,梅将在下次试一试。:)
<Grid>
<DockPanel>
<ListView Name="lstDetectedComputers"
MinWidth="200"
DockPanel.Dock="Left"
ItemsSource="{Binding ComputersList}" DisplayMemberPath="ComputerName">
</ListView>
<DataGrid x:Name="ViewNetworkCardInformation"
ItemsSource="{Binding NetworkCardInformation}"/>
</DockPanel>
</Grid>
private ObservableCollection<Object> _ComputersList;
public ObservableCollection<Object> ComputersList
{
get
{
return _ComputersList;
}
set
{
_ComputersList = value; NotifyPropertyChanged("ComputersList");
}
}
private DataTable _NetworkCardInformation;
public DataTable NetworkCardInformation
{
get
{
return _NetworkCardInformation;
}
set
{
_NetworkCardInformation = value; NotifyPropertyChanged("NetworkCardInformation");
}
}