私は、xamarinプロジェクトでデータバインディングを使用して表示されるカスタムビューのカスタムリストを取得しようとしています(各ビューにコントロールを追加します)。しかし、私は私のプロジェクトを実行すると、何もリストに表示されません。私はデータバインディングのものに少し慣れているので少し混乱しています。私は検索し、いくつかの他の解決策を試みたが、私の特定の問題を把握することができませんでした。どんな助けもありがとう。ここに私のコード:ListViewカスタムビューでのデータバインディング
<?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="XamarinTuts.XMainPage">
<ContentPage.Content>
<StackLayout>
<Label Text="Tasks:" HorizontalTextAlignment="Start" VerticalTextAlignment="Start" x:Name="tasksLabel"></Label>
<ListView ItemsSource="{Binding taskItems}">
<ListView.ItemTemplate>
<DataTemplate>
<Frame BackgroundColor="Black" Padding="5">
<Grid>
<StackLayout Name="TextStack" Orientation="Vertical" Grid.Column="0">
<Label Text="{Binding Name}"></Label>
<Label Text="{Binding Description}"></Label>
</StackLayout>
<StackLayout Name="ButtonStack" Orientation="Horizontal" HorizontalOptions="End" Grid.Column="1">
<Button Name="Edit" Text="Edit" Width="50" Height="50"></Button>
</StackLayout>
</Grid>
</Frame>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
これは私のXAMLです。ここに私のXMainPage.csです:
私TestViewModel.cs続くpublic partial class XMainPage : ContentPage
{
TestViewModel vm;
public XMainPage()
{
InitializeComponent();
vm = new TestViewModel();
TaskListItem testItem = new TaskListItem(this, "Go shopping", "Drive to meijer and get the following: Milk, Eggs, Booze");
TaskListItem testItem2 = new TaskListItem(this, "Play Overwatch", "Pwn some n00bs");
vm.taskItems.Add(testItem);
vm.taskItems.Add(testItem2);
BindingContext = vm;
}
}
:
私TaskListItem.cs続くpublic class TestViewModel : INotifyPropertyChanged
{
ObservableCollection<TaskListItem> mtaskItems;
public TestViewModel()
{
mtaskItems = new ObservableCollection<TaskListItem>();
}
public ObservableCollection<TaskListItem> taskItems
{
get
{
return mtaskItems;
}
set
{
mtaskItems = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string name = null)
{
var changed = PropertyChanged;
if (changed == null)
return;
changed.Invoke(this, new PropertyChangedEventArgs(name));
}
}
:
public class TaskListItem : ViewCell
{
public Task newTask;
String mName;
String mDescription;
public String Name
{
get
{
return mName;
}
}
public String Description
{
get
{
return mDescription;
}
}
public TaskListItem(ContentPage taskListItemParent, String TaskName, String TaskDescription)
{
//newTask = new Task(TaskName, TaskDescription);
mName = TaskName;
mDescription = TaskDescription;
}
}
私のコードをあなたの提案で更新しましたが、それでも私のためには機能しません。私はそれが正しく設定されているように見えるが、何もページに表示されていない。私はまだ何かが欠けていますか? – Jremery1337
私には無効なXAMLがいくつかありました。ちょっと手を加えた後、私はそれを正しく表示することができました。ご協力いただきありがとうございます! – Jremery1337
コンパイル時にそれらのエラーを見つけることができないのは間違いです。情報が助けてくれてうれしい –