我有一个使用ReactiveUI的UWP应用程序。我导航到带有以下代码的页面:
Router.Navigate.Execute(new AccountListViewModel(this));
导航完成。但是我为导航创建的ViewModel并未分配给View中的ViewModel。 IViewFor <>的实现如下:
public sealed partial class AccountListView : IViewFor<AccountListViewModel>
{
public static readonly DependencyProperty ViewModelProperty = DependencyProperty
.Register(nameof(ViewModel), typeof(AccountListViewModel), typeof(AccountListView), null);
public AccountListView()
{
this.InitializeComponent();
this.WhenActivated(disposables =>
{
// My Bindings
...
});
}
object IViewFor.ViewModel
{
get => ViewModel;
set => ViewModel = (AccountListViewModel) value;
}
public AccountListViewModel ViewModel {
get => (AccountListViewModel)GetValue(ViewModelProperty);
set => SetValue(ViewModelProperty, value);
}
还是我在这里完全出错了?
答案 0 :(得分:2)
根据用于通用Windows平台和Windows Presentation Foundation的ReactiveUI RoutedViewHost implementation for Windows,视图模型一定应该分配给IViewFor.ViewModel
属性。您可以在IScreen.Router.CurrentViewModel
属性中跟踪更改,以确保更改。
如果确实如此,请确保将IScreen.Router
属性正确绑定到特定于UWP的Router
XAML控件的RoutedViewHost
属性,并路由应该终于工作了。实际上,我最近在UWP上测试了该行为,并使用ReactiveUI 9.13.1和最新的UWP SDK对我来说很好用。尝试遵循routing tutorial来完全了解路由的工作原理。如果仍然无法解决问题,那么将编译后的最小修复文件上传到GitHub可以帮助我们更好地了解您的问题。另外,请加入ReactiveUI Slack,我们随时准备为您提供帮助。