我有一个返回ICommand的函数(确切地说是RelayCommand),对于这个函数我需要传递一些参数。这是代码:
private ICommand CreateSectionCommand(FilterEnum filterEnum, string title = null, string searchKey = "")
{
return new RelayCommand(() =>
{
NavigationService.Build<SearchPageViewModel>()
.WithParam("criteria", new Criteria
{
Query = searchKey,
SearchFilter = filterEnum,
Title = title
})
.Navigate();
});
}
当我初始化命令时,一切正常,但是当我点击导航按钮时,它什么也没做。最有可能的问题是,所有参数都为null,因为在初始化的不同时间调用了RelayCommand。
如何解决此问题并传递正确的参数?我不能简单地绑定XAML中的CommandParameter属性。
编辑:刚检查了我的旧代码,完全相同的版本适用于Windows 8,但我的项目现在是Windows 8.1。
答案 0 :(得分:0)
尝试将这些参数(在View中)绑定到ViewModel的属性 - 我假设参数来自View的某些UI元素(例如搜索TextBox或过滤器类型ComboBox)。然后,您将能够在CreateSectionCommand中使用它们。
但如果你不能使用View中的绑定,请试试这个:
private Criteria commandCriteria;
private ICommand CreateSectionCommand(FilterEnum filterEnum, string title = null, string searchKey = "")
{
commandCriteria = new Criteria
{
Query = searchKey,
SearchFilter = filterEnum,
Title = title
};
return new RelayCommand(() =>
{
NavigationService.Build<SearchPageViewModel>()
.WithParam("criteria",commandCriteria )
.Navigate();
});
}