Как получить текущий «элемент» в привязке ItemsSource

У меня есть пользовательский элемент управления с одним свойством зависимости. В моем окне у меня есть список объектов, и я создаю единую сетку, состоящую из моего пользовательского элемента управления. Я устанавливаю ItemsSource в свой список объектов, но мне нужно передать каждый соответствующий объект пользовательскому элементу управления. Пожалуйста, смотрите код ниже - мне нужно передать объект участника в LadderControl.

<ItemsControl Grid.Row="2" Name="Participants" ItemsSource="{Binding Path=MyEvent.Participants}">

    // more code here, irrelevant

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ladder:LadderControl Participant="CURRENT_ITEM_IN_PARTICIPANTS_LIST"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Есть ли способ сделать это? Должен ли я думать об использовании другого шаблона?

Спасибо


person Sherlock    schedule 25.09.2013    source источник


Ответы (3)


Просто сделайте следующее, так как Участник является контекстом каждого элемента.

<ladder:LadderControl Participant="{Binding}"/>
person Nitin    schedule 25.09.2013
comment
Я думаю, что это лучшее решение, так как LadderControl более портативный. Спасибо. - person Sherlock; 25.09.2013

Вы можете просто получить доступ к свойству DataContext в LadderControl, чтобы получить доступ к текущему участнику.

Нет необходимости в отдельном свойстве зависимости.

  class LadderControl 
  {
       ...
       public IParticipant Participant 
       {
            get{ return DataContext as IParticipant; } 
       }
       ...
person thumbmunkeys    schedule 25.09.2013

Одним из решений является просто сделать:

        <ladder:LadderControl Participant="{Binding Path=.}"/>

{Binding Path=.} должен быть связан с текущим элементом в списке ItemsSource.

person Zachary Canann    schedule 01.11.2017