2012-05-03 2 views
3

DelegateCommand를 사용하고 있으며 Command를 사용하여 UserControl을 전달하려고합니다. XAML에서CommandParameter를 사용하여 UserControl을 전달하는 방법은 무엇입니까?

#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 

명령

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

왜 ViewModel의 컨트롤에 액세스해야합니까? 일반적인 MVVM Appraoch는 컨트롤을 ViewModel에 바인딩하고 바인드 된 속성에서 데이터를 읽는 것입니다. –

+0

OpenView 명령은 특정 유형의 UserControl이 인스턴스화되어 사용자에게 표시되도록하기위한 것입니까? – Andrew

답변

9

당신은 당신의 UserControl에게 X 줄 경우 이름 (예 : "MYVIEW"),이 같은 것을 할 수 있어야한다 :

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

그것의 작동하지 않습니다 ... 나는 viemodel에 들어갈 수 없습니다. –

+0

요소가 창에 없습니다. UserControl 파일 –

+0

요소의 이름을 지정하지 않고 어떻게 할 수 있습니까? –

관련 문제