Частичные представления действительно делаются устаревшими. Причина, по которой он устарел, заключается в том, что мы привносим Поддержка регионов в Prism 8. Частичные представления всегда предназначались как быстрое и временное решение, помогающее сократить разрыв до тех пор, пока мы не приступим к реализации Regions for Prism.Forms. Регионы гораздо более мощные и позволят вам сделать гораздо больше, например, вложения и ленивую загрузку представлений.
Реально концепция вложенных регионов, в которой вы имеете:
ComponentViewA, который имеет свои собственный ViewModel.
Тогда у вас есть ComponentViewB, который имеет собственный ViewModel и имеет ComponentViewA как дочерний элемент
, а ComponentViewA сам является дочерним по отношению к AwesomePage
Похоже, это общая концепция, которую вы хотите поддержать. Таким образом, короткий ответ заключается в том, что в Prism 7 нет хорошего способа сделать это. Конечно, есть некоторые хаки, которые вы могли бы, например, передать на страницу в качестве параметра и установить свойство в коде, например:
public class ComponentViewB : ContentView
{
public static readonly BindableProperty ParentPageProperty =
BindableProperty.Create(nameof(ParentPage), typeof(Page), typeof(ComponentViewB), null, propertyChanged: OnParentPageChanged);
private static void OnParentPageChanged(BindableObject bindable, object oldValue, object newValue)
{
// This guards the action from being performed more than once.
if(oldValue is null && newValue != null && bindable is ComponentViewB view)
{
// This assumes you've set the property x:Name="componentViewA"
// for your ComponentViewA in XAML
ViewModelLocator.SetAutowirePartialView(view.componentViewA, (view.ParentPage);
}
}
public Page ParentPage
{
get => (Page)GetValue(ParentPageProperty);
set => SetValue(ParentPageProperty, value);
}
}
Если честно, если бы я сегодня заставил что-то работать, вот как я рекомендовал бы сделать это. После слияния PR, на который я ссылался выше, я бы предложил вам обновить предварительный просмотр и перейти на использование регионов.