現在我試圖讓一個ListView有一些可綁定的CustomCells。我將XAML中的單元定義爲ListView.ItemTemplate下的DataTemplate下的ViewCell。Xamarin表單列表視圖綁定
讓我們簡單地說,我有兩個字符串,我代表在單元格中。 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中引用它,但是你並不需要並且可以完全按照你以前所做的來做。你有特定的問題嗎? – hvaughan3
我想我在這裏誤解了一些根本性的東西。我不知道如何引用該文件,你建議這應該在標籤中完成?我也不瞭解我如何填充列表。我更新了我的問題,使其更加明顯。 –
看到我的答案,並讓我知道如果你仍然有問題 – hvaughan3