2014-02-08 3 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 показывает в моем DataGrid так что это указывает на то, что DataContext работает, как ожидалось.

сейчас им под впечатлением с ObservableCollection Мне не нужен INotifyPropertyChange, если это неправильно, пожалуйста, сообщите.

я также попытался просто ItemsSource = «{Binding} ComputersList»

я поставил точку останова в коде, чтобы гарантировать, что наблюдаемая коллекция имеет данные, и она есть.

  • ComputersList граф = 2 System.Collections.ObjectModel.ObservableCollection
  • [0] {AdminUltimate.Model.NetworkModel.ComputerNode} объекта {AdminUltimate.Model.NetworkModel.ComputerNode} Имя_Компьютера "ASUS-PC" строка

Помогло ли кто-нибудь помочь. Спасибо

+1

Неверное впечатление. ObservableCollection реализует INotifyCollectionChanged (не INotifyPropertyChanged). OC уведомляет вставки и удаляет - не изменения существующих элементов. – Paparazzi

+1

Попробуйте объявить свойство 'ComputersList' как' ObservableCollection 'вместо' ObservableCollection ' – har07

+0

Согласитесь с har07. NotifyPropertyChanged ("ComputersList"); не принадлежит. ComputerNode требуется NotifyPropertyChanged («Имя_компьютера»); – Paparazzi

ответ

1

Вы установили DisplayMemberPath, как ComputerName но Object не имеет такого свойства, так что ничего не показывает на взгляд.

Это может быть подтверждено удалением DisplayMemberPath, вы увидите полное имя класса вашего объекта, так как ToString() вызывается на ваш объект, если в ListBox не установлены ItemTemplate и DisplayMemberPath.

Таким образом, решение было бы изменения ObservableCollection<Object> к типу более конкретный объект, содержащий свойство ComputerName т.е. ObservableCollection<ComputerNode>.

+1

Вы знаете, что они ищут модераторов. Я думаю, вы бы были хорошим модератором, если у вас есть время. Неважно, что у вас нет необходимых значков. – Paparazzi

+0

Спасибо Blam. Да, я только что видел. Но профессиональная работа и ежедневное выведение будут немного утомительными. Мне нравится проверять SO так и сна, но, как вы сказали, у меня заканчиваются значки. Таким образом, может быть, это даст ему шанс в следующий раз. :) –

Смежные вопросы