Я пытаюсь изменить свойство в моем основном ViewModel
на основе щелчка по меню, которое заполняется списком объектов.
ViewModel
public class MyViewModel : ObservableObject
{
/// <summary>
/// Private field for products
/// </summary>
private ObservableCollection<Product> products;
/// <summary>
/// Private field for the product
/// </summary>
private Product product;
/// <summary>
/// Gets or sets the Product
/// </summary>
public Product Product
{
get => this.product;
set
{
this.product = value;
this.RaisePropertyChangedEvent("Product");
}
}
/// <summary>
/// Gets or sets a collection of Products
/// </summary>
public ObservableCollection<Product> Products
{
get => this.plant;
set
{
this.plant = value;
this.RaisePropertyChangedEvent("Products");
}
}
public ICommand ChangeProduct => new DelegateCommand(p => this.SetProduct((Product)p), p => p is Product);
private void SetProduct (Product product) => this.Product = product;
}
Я пытаюсь изменить Product
, нажав MenuItem
в Menu
.
<Menu Grid.Row="0" Background="White">
<MenuItem Header="Products">
<MenuItem Name="ProductMenu" Header="Change Product" ItemsSource="{Binding Products}" DisplayMemberPath="Name" Command="{Binding ChangeProduct}" CommandParameter="{Binding ElementName=ProductMenu}"/>
</MenuItem>
</Menu>
Это, однако, не работает. Как связать Product
, прикрепленный к сгенерированному нажатием MenuItem
, в качестве параметра моей ViewModel?