棱镜 - 命令不射击

时间:2009-09-08 11:26:56

标签: wpf binding prism command

我有一个观点

<UserControl x:Class="Modules.NavigationMenu.Views.NavigationMenuView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<StackPanel>
    <Button Command="{Binding InspectionCommand}">Inspection</Button>
    <Button Command="{Binding HandheldCommand}">Handheld</Button>
</StackPanel>
</UserControl>

和一个简单的视图模型 - 但这些命令似乎无法触发 - 有人能指出我正确的方向吗?

public class NavigationMenuViewModel : INavigationMenuViewModel
{
    public INavigationMenuView View { get; set; }

    public NavigationMenuViewModel(IEventAggregator eventAggregator, INavigationMenuView view)
    {
        View = view;
        HandheldCommand = new DelegateCommand<object>(LaunchHandheld);
        InspectionCommand = new DelegateCommand<object>(LaunchInspection);
    }

    private void LaunchInspection(object obj)
    {
        MessageBox.Show("Inspection Clicked");
    }


    private void LaunchHandheld(object obj)
    {
        MessageBox.Show("Handheld Clicked");
    }

    public DelegateCommand<object> HandheldCommand { get; set; }
    public DelegateCommand<object> InspectionCommand { get; set; }

}

我的模块看起来像......

public class NavigationMenuModule : IModule
{
    private readonly IUnityContainer _container;
    private readonly IRegionManager _regionManager;

    public NavigationMenuModule(IUnityContainer container, IRegionManager regionManager)
    {
        _container = container;
        _regionManager = regionManager;
    }

    #region Implementation of IModule

    public void Initialize()
    {
        RegisterViewsAndServices();
        var viewModel = _container.Resolve<INavigationMenuViewModel>();
        _regionManager.Regions[RegionNames.MainMenu].Add(viewModel.View);

    }

    #endregion

    #region Protected Methods

    protected void RegisterViewsAndServices()
    {
        _container.RegisterType<INavigationMenuView, NavigationMenuView>();
        _container.RegisterType<INavigationMenuViewModel, NavigationMenuViewModel>();
    }

    #endregion
}

1 个答案:

答案 0 :(得分:4)

您确定命令绑定有效吗?如果您运行应用程序并查看调试输出面板,您是否看到任何绑定警告?您的UserControl的DataContext可能未设置为您的NavigationMenuViewModel。