Ich baue ein dynamisches Kontextmenü. Um das zu erreichen habe ich mit einem benutzerdefinierten Ansichtsmodell kommen, dass mein contextmenu darstellt, wie folgt definiert:CommandParameter an Eigenschaft des besitzenden Objekts binden
public class ContextMenuVM {
public object ContextItem { get; set; }
public ObservableCollection<ICommand> Items { get; private set; }
}
Die Eigenschaft Items
die effektiven Befehle hält in der contextmenu zu zeigen und die Eigenschaft ContextItem
die kontext Artikel besagt, dass Diese Befehle sollen ausgeführt werden.
Weiterhin habe ich eine Singleton-Klasse, die alle meine verschiedenen Befehle und ihre Implementierung enthält. Also am Ende wird ein Verfahren sein, das UpdateContextMenu
auf dem Viewmodel aufgerufen wird, der die contextmenu besitzt, die so etwas wie dies funktioniert:
ContextMenu.Items.Clear();
ContextMenu.Items.Add(SingletonClass.Instance.CommandA);
if (condition)
ContextMenu.Items.Add(SingletonClass.Instance.CommandB);
Die ContextMenu iteself in XAML wie folgt definiert ist:
<ContextMenu ItemsSource="{Binding Path=ContextMenu.Items}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<ContentControl>
<MenuItem Command="{Binding}" CommandParameter="what-goes-here?" />
</ContentControl>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
Was ich nicht erreichen kann, ist die CommandParameter
Bindung zu arbeiten. Wie soll ich an die ContextItem
Eigenschaft der ContextMenuVM
Instanz binden?