В моем приложении Xamarin Forms у меня есть настраиваемый элемент управления, отображающий список данных. Данные определены в IEnumerable ViewModel. Обычно модель представления определяется динамически в C#, но мне было интересно, можно ли определить ее в XAML? Например, в моем XAML у меня есть это:
<?xml version = "1.0" encoding = "utf-8" ?>
<ContentPage xmlns = "http://xamarin.com/schemas/2014/forms"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
x:Class = "WrhseCtrls.Views.CollapsibleGridPage"
xmlns:local = "clr-namespace:WrhseCtrls;assembly=WrhseCtrls">
<ContentPage.Content>
<local:Views.CollapsibleGridView Title = "No View Model">
<local:Views.CollapsibleGridView.BindingContext>
<local:ViewModels.ListViewItem/>
</local:Views.CollapsibleGridView.BindingContext>
<local:ViewModels.ListViewRow Caption = "Row" Text = "Text" Hidden = "False" Height = "30"></local:ViewModels.ListViewRow>
</local:Views.CollapsibleGridView>
</ContentPage.Content>
Модель представления ListViewItem является IEnumerable из ListViewRow. Можно ли заполнить эту модель представления в XAML, как я пытался сделать в строке ListViewRow? Большое спасибо.





Я не уверен, что вы можете делать то же самое, что и создавать, создавая экземпляры и добавляя элементы в собственный класс IEnumerable. Но если я не ошибаюсь, вы можете использовать это так:
<ContentPage.Content>
<local:Views.CollapsibleGridView Title = "No View Model">
<local:Views.CollapsibleGridView.BindingContext>
<x:Array Type = "{x:Type local:ViewModels.ListViewRow}">
<local:ViewModels.ListViewRow Caption = "Row 1" Text = "Text 1" Hidden = "False" Height = "30"></local:ViewModels.ListViewRow>
<local:ViewModels.ListViewRow Caption = "Row 2" Text = "Text 2" Hidden = "False" Height = "30"></local:ViewModels.ListViewRow>
<local:ViewModels.ListViewRow Caption = "Row 3" Text = "Text 3" Hidden = "False" Height = "30"></local:ViewModels.ListViewRow>
</x:Array>
</local:Views.CollapsibleGridView.BindingContext>
</local:Views.CollapsibleGridView>
</ContentPage.Content>