Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF WiX部署的应用程序命令不起作用_C#_Wpf_Mvvm - Fatal编程技术网

C# WCF WiX部署的应用程序命令不起作用

C# WCF WiX部署的应用程序命令不起作用,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个使用WiX构建和部署的WCF应用程序。在我的开发环境中,应用程序运行良好。当我在测试机上安装后尝试启动应用程序时,应用程序启动正常,但“按钮”不起作用 (我引用了按钮,因为我有一个实际的按钮和一对无法工作的菜单项。) 我使用的是MVVM模式,所有按钮都使用命令。我已将Datacontext设置为存储命令方法的ViewModel实例 MainWindow.xaml.cs: public MainWindow(Configuration config) { Init

我有一个使用WiX构建和部署的WCF应用程序。在我的开发环境中,应用程序运行良好。当我在测试机上安装后尝试启动应用程序时,应用程序启动正常,但“按钮”不起作用

(我引用了按钮,因为我有一个实际的按钮和一对无法工作的菜单项。)

我使用的是MVVM模式,所有按钮都使用命令。我已将Datacontext设置为存储命令方法的ViewModel实例

MainWindow.xaml.cs:

 public MainWindow(Configuration config)
    {
        InitializeComponent();
        log.Info("Application started.");
        MainWindowViewModel _model = new MainWindowViewModel(config);
        _model.Config = config;
        DataContext = _model;
        Closing += _model.OnClosing;
    }
MainWindowViewModel.cs

public MainWindowViewModel(Configuration config)
    {
        try
        {
            Config = config;

            ...

            PlayCommand = new PlayCommand(this);
            StopCommand = new StopCommand(this);
            PauseCommand = new PauseCommand(this);
            OptionsCommand = new OptionsCommand(this);
            ExitCommand = new ExitCommand(this);

            ...

        }
        catch(Exception ex)
        {
            log.Error(ex.Message, ex);
        }
    }


public void Play()
    {
        <Play logic>
    }

有什么建议吗?

检查日志-在初始化任何命令之前,可能会引发异常


考虑到它只在测试机器上发生,我猜它正在加载一个不存在的文件,或者其他一些系统/环境问题。如果即使出现异常,应用程序也可以运行,则将try-catch块包装为代码中较小的、更相关的部分,并让按钮初始化。如果抛出该异常时应用程序不应运行,则可以显示消息或类似内容并退出。

使用Snoop并在运行时检查绑定。
public class PlayCommand : ICommand
{
    private MainWindowViewModel _viewModel;

    public event EventHandler CanExecuteChanged;

    public PlayCommand(MainWindowViewModel viewModel)
    {
        _viewModel = viewModel;
    }

    public bool CanExecute(object parameter)
    {
        return _viewModel.IsPlaying;
    }

    public void Execute(object parameter)
    {
        _viewModel.Play();
    }
}