在我的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'是'ListViewRow'的IEnumerable。是否可以在XAML中填充此视图模型,就像我在“ListViewRow”行中尝试过的那样?非常感谢。
答案 0 :(得分:2)
我不确定你能否像你一样完成,实例化并将itens添加到自定义的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>