2016-01-27 51 views
5

私は数日前にWPFを使い始めましたが、理解できない問題が発生しました。値をnullにすることはできませんCommandBindingカスタムコマンド

私は、次のエラーを得た:

Value cannot be null. Parametername: value

エラーが発生し、ここで:私はもちろん、XAML名前空間xmlns:self="clr-namespace:PrintMonitor"を設定している

<Window.CommandBindings> 
     <CommandBinding Command="self:CustomCommands.Exit" Executed="ExitCommand_Executed" CanExecute="ExitCommand_CanExecute"/> 
</Window.CommandBindings> 

コードビハインド:

namespace PrintMonitor 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void ExitCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e) 
     { 
      if(e != null) 
       e.CanExecute = true; 
     } 

     private void ExitCommand_Executed(object sender, ExecutedRoutedEventArgs e) 
     { 
      Application.Current.Shutdown(); 
     } 
    } 

    public static class CustomCommands 
    { 
     public static readonly RoutedUICommand Exit = new RoutedUICommand 
       (
         "Beenden", 
         "Exit", 
         typeof(CustomCommands), 
         new InputGestureCollection() 
         { 
          new KeyGesture(Key.F4, ModifierKeys.Alt) 
         } 
       ); 
    } 
} 

私は、例えば使用している場合、私はカスタムコマンドを使用しますが、ない場合は、なぜこのエラーが発生しませんCommand="ApplicationCommands.New"このエラーを解決するにはどうすればよいですか?

コードはthis tutorialの一部です。

+0

するようにする必要がありますか?チュートリアルと提供されたスニペットに基づいてエラーを再現できません。 – Geoffrey

+1

Vs 2015 Enterprise V 14.0。 私はプロジェクトをコンパイルして実行するが、エラーは継続することを付け加えるべきである –

+1

私は今、新しいプロジェクトを作成し、1:1をコピーしてエラーが消えた... intellisense bug i think! –

答えて

0

たぶん、あなたは、静的ではないにCustomCommandsを設定

とメインウィンドウのDataContextのはCustomCommandsあなたはVSのどのバージョンを使用している

public class CustomCommands 
{ 
     public static readonly RoutedUICommand Exit = new RoutedUICommand 
       (
         "Beenden", 
         "Exit", 
         typeof(CustomCommands), 
         new InputGestureCollection() 
         { 
          new KeyGesture(Key.F4, ModifierKeys.Alt) 
         } 
       ); 
} 

public partial class MainWindow : Window 
{ 
    public CustomCommands CM; 
    public MainWindow() 
    { 
     CM = new CustomCommands(); 
     this.DataContext = CM; 
     InitializeComponent(); 

    } 

    private void ExitCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e) 
    { 
     if(e != null) 
      e.CanExecute = true; 
    } 

    private void ExitCommand_Executed(object sender, ExecutedRoutedEventArgs e) 
    { 
     Application.Current.Shutdown(); 
    } 

} 
関連する問題