Как передать связанный элемент данных в ViewModel элемента ListBox? - PullRequest
2 голосов
/ 09 августа 2010

Пытаясь решить очень простую проблему с помощью mvvm-light, но после нескольких дней просеивания StackOverflow и большого количества поисков в Google я не нашел простого решения.

У меня есть ListBox сDataTemplate.DataTemplate содержит один userControl для отображения содержимого

<ListBox ItemSource={Binding Posts} >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <ctl:PostControl/>  <-- child control I'm trying to pass data to
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

У меня есть viewModels как на родительской странице (используется для привязки к сообщениям, там нет проблем), так и на PostControl для отображения отдельных сообщений.

Вопрос: Как получить отдельное сообщение (из привязки элемента управления posts) в viewModel PostControl?

Я использовал DataContext в определении PostControl:

DataContext="{Binding PostControlViewModel, Source={StaticResource Locator}}"

, который, кажется, работает, но мне нужен доступ к отдельной публикации, связанной с этим элементом управления родительским ListBox.Как я могу передать отдельное сообщение в viewmodels PostControls?

1 Ответ

1 голос
/ 09 августа 2010

Не видя ваш UserCtl, трудно сказать, что идет не так, но я бы сказал, что ваш ListBox выглядит нормально, и каждый элемент управления должен быть привязан к элементу сообщений.

Что вы должны не сделать, это переопределить это в UserCtl, поэтому я думаю, что атрибут DataContext="..." должен просто идти.

Предполагая, что Posts - это список PostControlViewModel, который есть.Если это список класса (Business) Model Post, вам нужен конвертер.Но он должен содержать ViewModels.

...