2013-07-23 2 views
0

Я не могу понять, что происходит. Из моего предыдущего потока, here, я спросил, почему данные не извлекаются в combobox, но не имеют проблем с текстовыми полями. Все, что я хочу, это получить каждую запись с помощью кнопок навигации. Есть ли что-то, что я пропустил для раздела свойств combobox? Есть ли альтернативное решение для того, что я сделал? Все кодирование доступно из моего предыдущего потока, here, есть ли проблема с компонентом visual studio?Получение данных в combobox

Большое спасибо

ответ

1

Мой друг, ты так далеко от того, как это должно быть сделано. Вы говорите о ComboBox, но я думаю, что вы должны означать ListView. Только ComboBox в вашем коде имеет ComboBoxItem с жестким кодом внутри, поэтому, я думаю, вы не говорите об этом.

В любом случае, это то, как вы исправить вашу проблему:

Добавьте класс, похожий на это для ваших данных:

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string HealthDetails { get; set; } 
} 

Добавить это свойство зависимостей в код позади:

public static readonly DependencyProperty PeopleProperty = DependencyProperty.Register("People", typeof(ObservableCollection<Person>), typeof(MainWindow), new UIPropertyMetadata(new ObservableCollection<Person>())); 

public ObservableCollection<Person> People 
{ 
    get { return (ObservableCollection<Person>)GetValue(PeopleProperty); } 
    set { SetValue(PeopleProperty, value); } 
} 

Заполните коллекцию People с вашими данными. Тогда самое главное, привязать к этой коллекции. Раньше вы были обязательными для всего MainWindow.cs класса ... изменить

<ListView Height="134" HorizontalAlignment="Left" Name="listView1" 
    ItemsSource="{Binding}" VerticalAlignment="Top" Width="384"> 

к этому:

<ListView Height="134" HorizontalAlignment="Left" Name="listView1" 
    ItemsSource="{Binding People}" VerticalAlignment="Top" Width="384"> 

Это прекрасно работает для меня. Однако ваши навигационные кнопки никогда не будут работать так. Здесь так много ошибок, я просто не успеваю исправить все это для вас. Ниже приводится краткая информация о том, где вы ошибетесь:

  1. Данные, указанные в Window, никогда не должны храниться в коде.
  2. Данные должны храниться в собственности, которая поддерживает интерфейс INotifyPropertyChanged.
  3. Данные не должны перезагружаться при повторении через коллекцию в пользовательском интерфейсе (если только вы не ожидаете непрерывных обновлений).
  4. Объекты данных, такие как DataTable s, не должны отображаться в пользовательском интерфейсе.
  5. Вы должны связать свойство элементов управления коллекцией ItemsSource с элементами коллекции в вашей модели или коде.
  6. Вы должны связать свойство элементов управления коллекцией SelectedItem с соответствующим типом в вашей модели или коде.
  7. В обработчиках щелчков кнопки установите этот выбранный элемент в своей модели или коде, а элементы управления пользовательского интерфейса будут автоматически обновляться.
+0

Шеридан - Спасибо за ваше драгоценное время, помогая мне. – bucketblast

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