У меня есть WrapPanel из набора инструментов Silverlight в приложении WP7. В своем коде я добавляю свои пользовательские элементы управления в эту оболочку. Каждый элемент управления пользователя представляет собой квадрат, отображающий информацию о рейсе.
<ScrollViewer x:Name="MyScrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Height="307" VerticalAlignment="Bottom">
<toolkit:WrapPanel x:Name="MonitoredWrapPanel" Margin="10,0,0,0" MinWidth="200" Width="{Binding ElementName=MyScrollViewer, Path=ViewportWidth}">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu x:Name="FlightContextMenuInGrid">
<toolkit:MenuItem Header="Stop monitoring flight" Click="MenuItem_Click" Tag="{Binding Path=FlightId}" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</toolkit:WrapPanel>
</ScrollViewer>
И код позади;
foreach (var flight in Cache.MonitoredCombinedFlights)
{
FlightSquare square = new FlightSquare();
square.DataContext = flight;
square.Margin = new Thickness(10, 5, 10, 5);
this.MonitoredWrapPanel.Children.Add(square);
}
Моя проблема в том, что MenuItem (для ContextMenu) не привязывается к свойству FlightId DataContext для моего пользовательского элемента управления, а просто привязывается к самому себе.
Как я могу получить MenuItem, чтобы понять, на каком FlightSquare он находится?