2014-02-08 48 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

謝謝布萊姆。是的,我剛看到它。但是,專業工作和每天抽出時間會很乏味。我喜歡檢查出來,但是像你說的我沒有使用徽章。所以,下次可能會出手。 :) –