我有一個MainView,其DataContext是我的MainViewModel。Caliburn.Micro:調用DataContext屬性的方法
MainViewModel:
class MainViewModel : PropertyChangedBase
{
#region Properties
/// <summary>
/// The ProjectViewModel.
/// </summary>
public ProjectViewModel ProjectVM
{
get { return _projectVM; }
private set
{
_projectVM = value;
NotifyOfPropertyChange(() => ProjectVM);
}
}
private ProjectViewModel _projectVM;
#endregion
/// <summary>
/// Constructor.
/// </summary>
public MainViewModel()
{
ProjectVM = new ProjectViewModel();
}
}
現在,我有我的MainView菜單。我想將MenItems的Click事件綁定到ProjectVM對象上的方法。當然我知道我可以設置MenuItems的DataContext,但我想知道是否有更簡單的方法。
目前我的MainView是這樣的:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Header="File">
<MenuItem Header="New Project...">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="ProjectVM.ShowNewProjectDialog"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</MenuItem>
<MenuItem Header="Load Project..."/>
<MenuItem Header="Close Project..."/>
</MenuItem>
</Menu>
我希望卡利很聰明,解決ProjectVM.ShowNewProjectDialog,但事實並非如此。有沒有什麼好的方法來做到這一點,而不必手動設置菜單的DataContext?