无法让我的listview显示数据。
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正在按预期工作。
现在我在ObservableCollection的印象下我不需要INotifyPropertyChange,如果这是错误的,请建议。
我也试过了ItemsSource =“{Binding ComputersList}”
我在代码中设置了一个断点,以确保可观察集合具有数据,并且它就在那里。
有人可以帮忙吗? 谢谢
答案 0 :(得分:1)
您已将DisplayMemberPath
设为ComputerName
,但Object
没有任何此类属性,因此在视图中不会显示任何内容。
这可以通过删除DisplayMemberPath
来验证,如果在ListBox上没有设置ItemTemplate和DisplayMemberPath,则会在对象上调用ToString()
,因此您将看到对象的完全限定类名。
因此,解决方案是将ObservableCollection<Object>
更改为包含属性ComputerName
的更具体对象的类型,即ObservableCollection<ComputerNode>
。