【发布时间】:2016-10-10 02:50:09
【问题描述】:
现在我正在尝试让 ListView 拥有一些可绑定的 CustomCell。我将 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); }
}
}
【问题讨论】:
-
您编写的代码应该可以正常工作。如果您想扩展或自定义
ViewCell,那么您可以在 C# 代码中扩展它并在您的 XAML 中引用它,但您不必也可以完全按照您在上面所做的那样做。您有具体问题吗? -
我想我在这里误解了一些基本的东西。我不确定如何引用该文件,您是否建议这应该在标签中完成?我也不明白我如何填充列表。我更新了我的问题以使其更加明显。
-
查看我的回答,如果您仍有问题,请告诉我
标签: c# xaml listview xamarin.forms