2011-09-02 7 views
3

명령 바인딩 및 프리즘 라이브러리를 사용하는 텍스트 블록이 있습니다. Command 바인딩을 사용하는 여러 매개 변수

는 XAML의 parth입니다 :

<TextBlock Margin="0,10,0,0">SocialSecurityNumer:</TextBlock> 
<TextBox Name="SSNText" GotFocus="TextBox_GotFocus" Text="{Binding SSN, UpdateSourceTrigger=PropertyChanged}" Margin="0,3,0,0"/> 

그리고 이것은 뒤에 뷰 모델입니다 :

public FindViewModel() 
{ 
    var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>(); 

    FindCommand = new DelegateCommand(
     () => eventAggregator.GetEvent<SSNChangedEvent>().Publish(SSN), 
     () => !string.IsNullOrWhiteSpace(Kennitala) 
     ); 
} 

public DelegateCommand FindCommand { get; set; } 

private string ssn; 
public string SSN 
{ 
    get { return ssn; } 
    set 
    { 
     if (ssn== value) 
      return; 

     ssn = value; 
     RaisePropertyChanged(() => SSN); 
     FindCommand.RaiseCanExecuteChanged(); 
    } 
} 

그리고 이것은이 이벤트 트리거를 수신하고 같은 SSN과 기능을의 화재 GridViewModel입니다 매개 변수

어떻게 datetime 매개 변수와 같은 다른 매개 변수를 추가 할 수 있습니까? 저를 혼란스럽게 만드는 부분은 다음과 같습니다

FindCommand = new DelegateCommand(
      () => eventAggregator.GetEvent<SSNChangedEvent>().Publish(SSN), 
      () => !string.IsNullOrWhiteSpace(Kennitala) 
      ); 

이 게시 기능은 하나의 매개 변수를 사용하고 그 때문에 나는 쉽게 여러 paramters를 추가하는 방법을 참조하지는 ??.

+0

에서 [편집 도움말]을 읽어주세요 (http://stackoverflow.com/editing-help) 제대로 코드를 포맷해야합니다 다음 번에. –

+0

형식이 잘못 되었나요? – aghaux

+0

글쎄, 더 이상은 아니지만 ... –

답변

5

게시 할 모든 필수 매개 변수를 보유하는 클래스를 만들어야합니다.

public class SSNChangedEventParams 
{ 
    public string SSN{get;set;} 
    public DateTime Dt{get;set;} 
    ... 
} 

다음이 클래스의 인스턴스 게시 :

eventAggregator.GetEvent<SSNChangedEvent>().Publish(new SSNChangedEventParams(){SSN=SSN, Dt = DateTime.Now}) 
+1

@agh 매개 변수는 원하는대로 지정할 수 있으므로이 대답에서 제안하는대로 필요한 매개 변수를 가진 컨테이너 클래스를 만들어 생성자에 전달하십시오. 몇 번, 나는 전체 ViewModel을 명령 매개 변수로 전달할 때까지 갔다. – EtherDragon

+0

안녕하세요. 빠른 질문입니다. 매개 변수 DT에서 오는 값은 항상 Date = {1.1.0001 00:00:00}이지만 datepicker에서 다른 날짜를 선택합니다 – aghaux

+0

@agh : DateTime의 기본값입니다. 다른 질문을 게시하십시오. 그 문제가있다. – thumbmunkeys

관련 문제