2012-05-03 13 views
3

私はDelegateCommandを使用していて、私はCommandでUserControlを渡したいと思います。 XAMLCommandParameterでUserControlを渡す方法は?

<Button Name="btnStockGroups" Command="{Binding OpenViewCommand}" CommandParameter="JIMS.View.Stock.StockGroups">stock group</Button> 
+0

なぜViewModelのコントロールにアクセスする必要がありますか?一般的なMVVM appraochは、ViewModelにコントロールをバインドし、それがバインドされているプロパティからデータを読み込むことです。 –

+0

OpenViewコマンドは、特定のタイプのUserControlをインスタンス化してユーザーに表示させることを目的としていますか? – Andrew

答えて

9

#region OpenViewCommand 
private DelegateCommand<UserControl> _openViewCommand; 
public ICommand OpenViewCommand 
{ 
    get 
    { 
     if (_openViewCommand == null) 
      _openViewCommand = new DelegateCommand<UserControl>(new Action<UserControl>(OpenView)); 
     return _openViewCommand; 
    } 
} 

public void OpenView(UserControl ViewName) 
{ 
    UserControl ctrl = (UserControl)ViewName; 
    JIMS.Controls.Message.Show(ViewName.ToString()); 
} 
#endregion 

コマンドあなたは、ユーザーコントロールにX与える場合:名前(例えば "MYVIEWを")、あなたはこのような何かを行うことができるはず:

<Button Name="btnStockGroups" 
     Command="{Binding OpenViewCommand}" 
     CommandParameter="{Binding ElementName=MyView}"> 
+0

その動作していません...私はviemodelに入ることができません –

+0

要素はウィンドウ内にありません..そのUserControlファイル –

+0

どのように要素の名前を付けずに行うことができますか? –

関連する問題