2016-06-12 4 views
1

viewおよびmodelviewオブジェクトがインスタンス化されているため気を散らしています。例: 私はビューVを持っています。listview LVとボタンがあります。ボタンには、パラメータとしてlistview LVが必要です。コマンドCanExecuteメソッドは、listView LVに要素があるかどうかをチェックします。しかし、私が開いたときビューVビューモデルオブジェクトが作成する前にビューVします。だからCanExectureメソッドがのリストビューをチェックすると、それはnullであり、私のボタンは永遠に不可能になります。WPF ViewとModelViewの作成

どのように問題を解決しますか?

EDIT: コマンドの実装:コマンド・インプリメンテーションのようなもののために

public class DelegateCommand : ICommand 
{ 
    public event EventHandler CanExecuteChanged; 

    private readonly Action<object> _execute; 
    private readonly Func<object, bool> _canExecute; 

    public DelegateCommand(Action<object> execute, Func<object, bool> canExecute = null) 
    { 
     if (execute == null) 
     { 
      throw new ArgumentNullException(nameof(execute)); 
     } 

     this._execute = execute; 
     this._canExecute = canExecute; 
    } 

    public bool CanExecute(object parameter) 
    { 
     return _canExecute == null || _canExecute(parameter); 
    } 

    public void Execute(object parameter) 
    { 
     _execute(parameter); 
    } 

    public void RaiseCanExecuteChanged() 
    { 
     CanExecuteChanged?.Invoke(this, EventArgs.Empty); 
    } 
} 
+0

あなたはあなたのコマンドimplementaion /あなたがコマンドに使用するフレームワークを投稿できますか? – JanDotNet

答えて

0

、あなたは(リストビュー項目を得た後、あなたのケースで)手動RaiseCanExecuteChanged()を呼び出す必要があります。

またにCanExecuteChangedイベントの実装を変更することができます実装が自動的にCanExecuteを評価するために、コマンドマネージャをenbalesこと

[...] 

public event EventHandler CanExecuteChanged 
{ 
    add { CommandManager.RequerySuggested += value; } 
    remove { CommandManager.RequerySuggested -= value; } 
} 

[...] 

+0

トピックのうちout:ビューが作成されているときに、モデルビューのコンストラクタに引数を渡す方法を知っていますか? – igorr

+0

@igorr:別個の質問を作成してください。コメントはそのためのものではありません。 – JanDotNet

関連する問題