Не удается привязать коллекцию к Listview в приложении WPF? - PullRequest
0 голосов
/ 15 ноября 2011

Я разрабатываю приложение WPF, в котором я могу читать некоторые свойства из списка служб Windows, которые в настоящее время работают в моей системе. Я могу прочитать свойства определенного сервиса и передать его в коллекцию, которая, в свою очередь, отображается в мой пользовательский интерфейс под ListView.

Я хочу, чтобы тот же сценарий использовался для списка услуг. Т.е. я пытаюсь следующим образом ... но я не уверен, где я упустил момент ...

Вот мой код

  foreach (string serviceName in sList)
        {
            ServiceController controller = new ServiceController(serviceName);


            StatusCollection.Add (new StatusData 
            { 
                Name = name, 
                Status = status 
            });
        lvStatus.DataContext = StatusCollection;
        lvStatus.ItemsSource = StatusCollection;
        }

 <ListView Height="166" HorizontalAlignment="Left" Margin="23,0,0,0" Name="lvStatus" VerticalAlignment="Top" Width="264"  >
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
                <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}"></GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

1 Ответ

1 голос
/ 16 ноября 2011

Удалить строку кода DataContext.

Если вы установили ваш ItemsSource в коде, убедитесь, что вы делаете это до вызова InitializeComponent. Если нет, вам нужно обновить коллекцию предметов.

Однако я бы настроил модель представления для вашего окна или элемента управления, который реализует INotifyPropertyChanged. Создайте свою коллекцию как ObservableCollection и свяжите ее с XAML:

<ListView ... ItemsSource={Binding Path=ServiceList}>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}" />
            <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Path=Status}" />
        </GridView>
    </ListView.View>
</ListView>

Дайте мне знать, если вам нужен пример использования модели представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...