Привязка к полю объекта в настройках приложения - PullRequest
1 голос
/ 01 апреля 2011

Чтобы контролировать сериализацию List<CustomObject>, я поместил этот список в класс, например ::

public class SerializableCustomObjectList : IXmlSerializable
{
  public List<CustomObject> CustomObjectList = new List<CustomObject>();
  ...
}

public class CustomObject {...}

, экземпляр которого хранится в настройках приложения. У меня нет проблем с сериализацией / десериализацией. Однако когда я пытаюсь привязать открытое свойство CustomObjectList к ListBox, ничего не происходит.

Вот мой код:

<ListBox Name="CustomObjectListBox">
  <ListBox.ItemsSource>
    <Binding Source="{x:Static p:Settings.Default}"
      Path="SavedCustomObjects.CustomObjectList"/>
  </ListBox.ItemsSource>
  ...
</ListBox>

, где SavedCustomObjects - это экземпляр SerializableCustomObjectList в Properties.Settings.Default.

В настоящее время поведение ListBox Items.Count остается равным нулю (в отладчике), даже если заполнен SavedCustomObjects.CustomObjectList.

1 Ответ

4 голосов
/ 01 апреля 2011

Я вижу несколько вещей:

  1. Вы должны привязать ItemsControl (например, ListBox) к ObservableCollection, а не к List.
  2. Вы можете привязать только ксвойства, а не поля (т. е. используйте get / set).
  3. Класс, который является DataContext, должен реализовывать INotifyPropertyChanged, а установщик (из пункта 2) должен вызывать событие PropertyChanged.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...