2016-09-21 14 views
1

WiXを使用してビルドして配布したWCFアプリケーションがあります。私の開発環境では、アプリケーションは正常に動作します。テストマシンにインストールした後にアプリケーションを起動しようとすると、アプリはうまく起動しますが、「ボタン」は機能しません。WCF WiXデプロイされたappコマンドが機能しない

(私は実際のボタンと機能しません、メニュー項目のペアを持っているので、私はボタンを引用。)

私は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> 
    } 

PlayCommand.cs

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(); 
    } 
} 

任意のアドバイスはありますか?

+0

スヌープを使用し、実行時にバインディングを調べます。 – Will

答えて

1

ログを確認してください。コマンドが初期化される前に例外がスローされている可能性があります。

テストマシンでのみ発生するのを見て、そこにないファイルやその他のシステム/環境の問題がロードされていると思います。その例外が発生してもアプリケーションを実行できる場合は、try-catchブロックをコードの関連部分を小さくして、ボタンを初期化させます。その例外がスローされたときにアプリケーションを実行しない場合は、メッセージなどを表示して終了できます。

関連する問題