问题的根本原因是RoutedViewHost默认时使用ViewModel属性,而不是RoutableViewModel属性。要解决这个问题,可以自定义RoutedViewHost并使用RoutableViewModel属性。
代码示例:
public class MyRoutedViewHost : RoutedViewHost
{
protected override void OnViewModelChanged(object sender, EventArgs e)
{
if (ViewModel is IRoutableViewModel routableViewModel)
{
Router.NavigationStack.Add(routableViewModel);
}
base.OnViewModelChanged(sender, e);
}
}
然后,在Avalonia中,使用自定义的RoutedViewHost: