Что я делаю, так это то, что я разбираю файл XML на множество объектов, затем читаю их и преобразую в представления.
Если вы хотите проанализировать файл xml и отобразить эти данные в ContentPage, я думаю, вам может не потребоваться использовать свойство Layout в ViewModel.
Для обычного режима mvvm, У меня есть один вид или шаблон, затем я добавляю в него данные.
Следующий код показывает, как использовать режим mvvm для отображения проанализированных xml данных.
. xml файл, добавив в проект root, затем установите Действие построения - это встроенный ресурс
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfMonkey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Monkey>
<Name>Baboon</Name>
<Location>Africa & Asia</Location>
<Details>Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.</Details>
</Monkey>
<Monkey>
<Name>Capuchin Monkey</Name>
<Location>Central & South America</Location>
<Details>The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus.</Details>
</Monkey>
<Monkey>
<Name>Blue Monkey</Name>
<Location>Central & East Africa</Location>
<Details>The blue monkey or diademed monkey is a species of Old World monkey native to Central and East Africa, ranging from the upper Congo River basin east to the East African Rift and south to northern Angola and Zambia.</Details>
</Monkey>
<Monkey>
<Name>Squirrel Monkey</Name>
<Location>Central & South America</Location>
<Details>The squirrel monkeys are the New World monkeys of the genus Saimiri. They are the only genus in the subfamily Saimirinae. The name of the genus Saimiri is of Tupi origin, and was also used as an English name by early researchers.</Details>
</Monkey>
<Monkey>
<Name>Golden Lion Tamarin</Name>
<Location>Brazil</Location>
<Details>The golden lion tamarin also known as the golden marmoset, is a small New World monkey of the family Callitrichidae.</Details>
</Monkey>
</ArrayOfMonkey>
Затем пользовательский интерфейс ContentPage для отображения этих данных.
<ContentPage
x:Class="demo3.listviewsample.Page17"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<ContentPage.Content>
<StackLayout>
<ListView HasUnevenRows="True" ItemsSource="{Binding monkeys}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Frame BorderColor="Orange" CornerRadius="10">
<StackLayout>
<Label Text="{Binding Name}" />
<Label Text="{Binding Location}" />
<Label Text="{Binding Details}" />
</StackLayout>
</Frame>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
public partial class Page17 : ContentPage
{
public Page17()
{
InitializeComponent();
this.BindingContext = new MonkeyViewmodel();
}
}
public class MonkeyViewmodel
{
public ObservableCollection<Monkey> monkeys { get; set; }
public MonkeyViewmodel()
{
#region How to load an XML file embedded resource
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(Page17)).Assembly;
Stream stream = assembly.GetManifestResourceStream("demo3.MonkeyXML.xml");
using (var reader = new StreamReader(stream))
{
var serializer = new XmlSerializer(typeof(ObservableCollection<Monkey>));
monkeys = (ObservableCollection<Monkey>)serializer.Deserialize(reader);
}
#endregion
}
}
public class Monkey
{
public string Name { get; set; }
public string Location { get; set; }
public string Details { get; set; }
}
По поводу привязки MVVM и MVVM, пожалуйста, посмотрите:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/mvvm
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-bindings-to-mvvm