コマンドバインディングとPrismライブラリを使用するテキストブロックがあります。
これはXAMLparthです。
<TextBlock Margin="0,10,0,0">SocialSecurityNumer:</TextBlock>
<TextBox Name="SSNText" GotFocus="TextBox_GotFocus" Text="{Binding SSN, UpdateSourceTrigger=PropertyChanged}" Margin="0,3,0,0"/>
そしてこれは背後にあるViewModelです:
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です。
public class GridViewModel : NotificationObject
{
public GridViewModel()
{
var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
eventAggregator.GetEvent<SSNChangedEvent>().Subscribe(GetData);
}
public ObservableCollection<Investment> Investments { get; set; }
private void GetData(string ssn)
{
var list = GeniusConnection.GetDataFromWebService(ssn);
Investments = new ObservableCollection<Investment>(list);
RaisePropertyChanged(() => Investment);
}
}
別のパラメーター、たとえば日時パラメーターを追加するにはどうすればよいですか。混乱する部分は次のとおりです。
FindCommand = new DelegateCommand(
() => eventAggregator.GetEvent<SSNChangedEvent>().Publish(SSN),
() => !string.IsNullOrWhiteSpace(Kennitala)
);
この公開関数は1つのパラメーターしか受け取らないため、複数のパラメーターを簡単に追加する方法がわかりません。