Нужно задавать меню коллекцией объектов.
public class Color
{
public string Name { get; set; }
}
public ObservableCollection<Color> Colors = new ObservableCollection<Color>()
{
new Color {Name = "black"},
new Color {Name = "white"},
new Color {Name = "red"},
};
Но не могу разобраться как правильно биндить коллекцию. Делаю так, но безрезультатно. Понимаю, что проблема из-за того, что DataContext не забирается у mainWindow, но как сделать правильно?
<Window.ContextMenu>
<ContextMenu DataContext="{Binding ElementName=mainWindow, Path=DataContext}"
ItemsSource="{Binding Colors}" />
</Window.ContextMenu>
ContextMenu не являеться частью визуального дерева поэтому он не может найти mainWindow. Данные необходимо брать из ContextMenu.PlacementTarget.
<Window.ContextMenu>
<ContextMenu
DataContext="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"
DisplayMemberPath="Name"
ItemsSource="{Binding Colors}" />
</Window.ContextMenu>
Кстати у вас Colors не свойсто, а поле.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости