2014-02-08 47 views
2

无法让我的列表视图显示数据。ListView Observable Collection不会显示成员

XAML

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

奇怪的是,NetworkCardInformation显示在数据网格我所以这表明在DataContext工作正常。

现在im用ObservableCollection的印象我不需要INotifyPropertyChange,如果这是错误的,请建议。

我也有尝试过的ItemsSource =“{结合ComputersList}”

我已经把一个破发点入代码,以确保观察集合有数据,而且它的存在。

  • ComputersList计数= 2 System.Collections.ObjectModel.ObservableCollection
  • [0] {AdminUltimate.Model.NetworkModel.ComputerNode} {对象} AdminUltimate.Model.NetworkModel.ComputerNode计算机名 “华硕-PC” 串

有人请协助。 谢谢

+1

错误的印象。 ObservableCollection实现INotifyCollectionChanged(而不是INotifyPropertyChanged)。 OC通知插入和删除 - 不改变现有项目。 – Paparazzi

+1

尝试将'ComputersList'属性声明为'ObservableCollection '而不是'ObservableCollection ' – har07

+0

同意har07。 NotifyPropertyChanged( “ComputersList”);不属于那里。 ComputerNode需要一个NotifyPropertyChanged(“ComputerName”); – Paparazzi

回答

1

您已设置DisplayMemberPathComputerNameObject没有任何这样的属性,因此它显示了图什么。

这可以通过删除DisplayMemberPath进行验证,如果在ListBox上没有设置ItemTemplate和DisplayMemberPath,将会看到对象的完全限定类名,因为ToString()会在您的对象上被调用。

所以,解决方案是变化ObservableCollection<Object>键入的更具体的包含对象属性ComputerNameObservableCollection<ComputerNode>

+1

你知道他们正在寻找版主。如果你有时间,我认为你会成为一名优秀的主持人。没关系你没有所需的徽章。 – Paparazzi

+0

谢谢布莱姆。是的,我刚看到它。但是,专业工作和每天抽出时间会很乏味。我喜欢检查出来,但是像你说的我没有使用徽章。所以,下次可能会出手。 :) –