Цель: Щелкните правой кнопкой мыши на ListBox и получите связанный контекстMenu.Trouble With ContextMenu, не отображающий элементы
public class MyViewModel
{
public List<string> ContextMenuItems{ get; set; }
public ItemObject MyObject{ get; set; }
}
public class ItemObject{
public List<OtherObjects> SomeCollection{ get; set; }
}
Теперь мой ListBox будет привязываться к "SomeCollection", но мой ContextMenu должен получить доступ к Binding вне ListBox, обязательными. Я попытался и не могу заставить его работать вообще, мое контекстное меню всегда пустое. Любая идея почему? Это в UserControl, а не в Window, а не в том, что это релевантно. Я просто показываю, почему мои пункты AncestorType в UserControl
<ListBox ItemsSource="{Binding SomeCollection}">
<ListBox.ContextMenu >
<ContextMenu DataContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" ItemsSource="{Binding ContextMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}" Command="{Binding MyCommand}"/>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
Какая ошибка привязки? (он появляется в окне «Выход»). Мне всегда нужно время, чтобы контекстные меню правильно связывались ... – Joe
Посмотрите на свой ItemsSource, который связан с ContextMenuItems, и это список строк. Связывание заголовков выглядит правильно для меня и привязывается к элементу, но что такое MyCommand? Я не думаю, что свойство отсутствует в строке. –
@Joe System.Windows.Data Error: 4: Не удается найти источник для привязки со ссылкой 'RelativeSource FindAncestor, AncestorType =' System.Windows.Controls.UserControl ', AncestorLevel =' 1 ''. BindingExpression: Path = DataContext.StandardLinksContextMenu; DataItem = NULL; целевой элемент - «ContextMenu» (Name = ''); target свойство - «ItemsSource» (тип «IEnumerable») – user1702369