C# ListView可观察集合将不显示成员

C# ListView可观察集合将不显示成员,c#,wpf,listview,C#,Wpf,Listview,无法使我的listview显示数据 XAML 代码: private observedcollection\u computers列表; 公共观测收集计算机列表 { 得到 { 返回计算机列表; } 设置 { _ComputersList=值;NotifyPropertyChanged(“ComputersList”); } } 专用数据表(网络信息); 公共数据表网络信息 { 得到 { 返回网络信息; } 设置 { _NetworkCardInformation=值;NotifyPro

无法使我的listview显示数据

XAML


代码:

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"); 
    }
}