c# - 命令绑定(bind)的多个参数

标签 c# wpf xaml prism commandbinding

我有一个带有命令绑定(bind)和使用 Prism 库的文本 block 。

这是 XAML 部分:

<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();
    }
}

这是 GridViewModel,用于监听此事件触发器并启动以 SSN 作为参数的函数

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);
    }
}

如何添加另一个参数,例如 datetime 参数,让我感到困惑的部分是:

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

这个发布函数只需要一个参数,因此我不知道如何轻松添加多个参数。??

最佳答案

您应该创建一个类,其中包含您要发布的所有必要参数。

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

然后发布这个类的一个实例:

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

关于c# - 命令绑定(bind)的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7284968/

相关文章:

c# - 从 C# 应用程序调试 C .dll 文件

c# - .NET 核心蓝牙

c# - 在 ListBox 中显示自定义对象列表,为每个对象使用自定义用户控件

c# - ProgressBar 的默认前景色

xaml - 如何设置 xamarin 表单输入字段的禁用文本颜色?

c# - LINQ to Entities 不支持扩展方法?

c# - BeginInvoke() 是否运行一个单独的线程?

c# - 如何将我的自定义用户控件及其自定义 View 模型包含到我的 xaml View 中?

尽管将水平/垂直对齐设置为拉伸(stretch),Xaml 网格仍不填充父级

c# - 将字符串转换为日期