Hi,
I'd like to be able to bind context menu for a xamGrid to a property in my viewmodel. It tried a number of things picked up from different places but it didnt work. My latest attempt is below
<igMenu:ContextMenuService.Manager> <igMenu:ContextMenuManager ModifierKeys="None"> <igMenu:ContextMenuManager.ContextMenu> <igMenu:XamContextMenu ItemsSource="{Binding ContextMenuItems}"> <igMenu:XamContextMenu.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Label}" /> </DataTemplate> </igMenu:XamContextMenu.ItemTemplate> </igMenu:XamContextMenu> </igMenu:ContextMenuManager.ContextMenu> </igMenu:ContextMenuManager> </igMenu:ContextMenuService.Manager>
in c#
public class Data { public string Header { get; set; } }
...
// This is in my ViewModel class
private ObservableCollection<Data> _contextMenuItems = new ObservableCollection<Data>(); public ObservableCollection<Data> ContextMenuItems { get { return _contextMenuItems; } set { _contextMenuItems = value; } }
Am I missing anything?
Thank you,
Eugene
Hi Eugene,
The XamContextMenu technically isn't in the VisualTree, as it floating in a popup. So it doesn't pick up standard DataContext inheritance.
Instead, your binding has to have a source set via a StaticResource.
-SteveZ
What kind of collection can I bind to (even from a Static Resource)?
The collection just has to implement IEnumerable. So any List<> or ObservableCollection<>
My ViewModel is already a StaticResource. Is it possible to bind to one of its properties?
Figured it out.