Привязка поля со списком WPF к конкретному экземпляру словаря - PullRequest
1 голос
/ 22 февраля 2011

Я новичок в WPF и пытаюсь настроить привязку данных для работы со списком.У меня есть класс, который я создал, с именем FolderList, который в основном охватывает экземпляр FileSystemWatcher.У него есть свойство Folders, которое возвращает словарь имен папок и их полных путей.

Затем для класса для моего окна WPF он содержит экземпляр FolderList с именем FolderWatcher, который настроен в конструкторе.Я хотел бы привязать комбинированный список к словарю в этом конкретном экземпляре FolderList.

Я нашел примеры, где есть статические экземпляры объектов данных или где они создаются с помощью XAML, но я не могу понятькак привязать к конкретному экземпляру.

Я не выбираю, если это сделано в XAML или C #.Я в основном зашел так далеко с ObjectDataProvider.

<Window.Resources>
<ObjectDataProvider x:Key="ProjectNames"
        ObjectType="{x:Type local:FolderList}"
    />
</Window.Resources>

А вот поле со списком, которое я хочу привязать к данным.Это не приводит к ошибкам, но также не заполняется.Я знаю достаточно, чтобы понять, что мне не хватает чего-то важного в ObjectDataProvider, но я просто не знаю, что это такое.

<ComboBox Name="ProjectCombo" MinWidth="100" ItemsSource="{Binding Source={StaticResource ProjectNames}, Path=Folders}" />

1 Ответ

1 голос
/ 22 февраля 2011

Вам не нужно ObjectDataProvider здесь.Просто установите ItemsSource вашего ComboBox непосредственно в конструкторе Window, где вы инициализируете свой экземпляр FolderList:

public MyWindow()
{
   InitializeComponent();

   FolderWatcher = new FolderList(...);

   ProjectCombo.ItemsSource = FolderWatcher.Folders;
}

Другой вариант - установить экземпляр FolderList как DataContext вашего окна, а затем используйте привязку для установки ItemsSource of the ComboBox`:

public MyWindow()
{
    InitializeComponent();

    FolderWatcher = new FolderList(...);

    DataContext = FolderWatcher;

}

<ComboBox Name="ProjectCombo" MinWidth="100" ItemsSource="{Binding Folders}" />

Я предлагаю вам посмотреть шаблон MVVM .Если вы спроектировали свое приложение в соответствии с этим шаблоном, у вас был бы экземпляр View Model как DataContext вашего представления, и эта View Model предоставила бы свойство, к которому вы могли бы привязаться.

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