现在我正在尝试让ListView拥有一些可绑定的CustomCells . 我在XAML中将单元格定义为ListView.ItemTemplate下的DataTemplate下的ViewCell .
让我们简单地说,我有两个我在Cell中代表的字符串 . ViewCell看起来像:
<?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="simpletest.MyPage2">
<ContentPage.Content>
<StackLayout Spacing="10" x:Name="layout" Padding="8,10">
<Label Text="{Binding Something}" />
<ListView x:Name="listView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Name}" />
<Label Text="{Binding Price}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
我真的很想在XAML中保留它 . 我不喜欢通过在C#中编写整个内容来将其变成一个膨胀的世界 .
我有一个ViewModel用于此页面,我在代码隐藏文件中设置绑定上下文 . 我的问题如下,我是否定义了一个在C#中扩展ViewCell以便绑定数据的类?如前所述,我不想在C#中定义布局 . 我想以这样的方式绑定 . 我想避免引用字段,因为文件背后的代码倾向于引用组件 . 这可能吗?我检查了Xamarin网站,该示例使用后面的代码混合和XAML(如果我正确解释它...) .
编辑1:
我尝试编写一个模仿一些例子的文件,但这还不够 . 没有一段代码解释这个文件是代表XAML中的ViewCell的文件,并且没有明显的方法来填充列表而不访问代码隐藏中的列表字段 . 如果我只想使用绑定将一些项添加到此列表中,我会错过什么?
public class ReportedAssignmentCell : ViewCell
{
public ReportedAssignmentCell()
{
}
public static readonly BindableProperty NameProperty = BindableProperty.Create("Name", typeof(string), typeof(ReportedAssignmentCell), "");
public static readonly BindableProperty PriceProperty = BindableProperty.Create("Price", typeof(string), typeof(ReportedAssignmentCell), "");
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
public string Price
{
get { return (string)GetValue(PriceProperty); }
set { SetValue(NameProperty, value); }
}
}
1 回答
您需要将
ListView
sItemSource
属性设置为项目列表 . 该项列表应包含在您的视图中 . 像这样的东西:然后在你的ViewModel中:
现在,如果您想使用自定义
ReportedAssignmentCell
,但您也可以将StackLayout
和Labels
留在那里 . 尝试像我上面描述的那样设置ItemSource
,使用您发布的当前ListView
XAML,看看是否能为您提供所需的效果 . 如果没有,请告诉我 .ViewCell
用于保存其他项目,例如StackLayout
和Labels
. 但它不必包含那些Label
将要绑定到的所有属性 . Binding从ListView.ItemSource
传递到ListView.ItemTemplate
. 该绑定不需要ViewCell
具有绑定的任何特殊属性 . 我希望这是有道理的 . 如果没有让我知道什么是不正确的 .