私はXamarinとC#を初めて使っています。だから、私のコードが駄目なら私を許してください。xamarinリストにバインド
本質的に私は、コース名のリストを表示する単純なページを作成しようとしており、ボタンはビュー内のリストから項目を挿入または削除することができます。
現在のところ、プログラムはビルドされて実行されますが、ビューにはリストの内容は表示されません。どんな助けでも大歓迎です。ありがとう!
ここでは、ビューの:ここで
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="65" />
<RowDefinition Height="*"/>
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Frame OutlineColor="Black" Grid.Row="0" Grid.ColumnSpan="2">
<Label Text= "My Courses" FontSize="20" TextColor="Black" HorizontalTextAlignment="Center"/>
</Frame>
<Frame OutlineColor="Black" Grid.Row="1" Grid.ColumnSpan="2">
<ListView x:Name="CourseList" ItemsSource="{Binding GetCourseList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<Label FontSize="14" Text="{Binding Name}" TextColor="Black" Grid.Row="0" Grid.Column="0"/>
<Button FontSize="14" Text="X" TextColor="Black" Grid.Row="0" Grid.Column="1"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Frame>
<Button Text="+" FontSize="20" TextColor="Green" BackgroundColor="Silver"
HorizontalOptions="Fill" VerticalOptions="Center"
Grid.Row="2" Grid.ColumnSpan="2"
/>
</Grid>
はView.csのコードは次のとおりです。
public partial class MainPage : ContentPage
{
MainPageViewModel vm;
public MainPage()
{
vm = new MainPageViewModel();
vm.AddCourse();
BindingContext = vm;
InitializeComponent();
}
はここに表示モデルです:
class MainPageViewModel
{
public string Name { get; set; }
public List<Course> Courses;
public MainPageViewModel()
{
Courses = new List<Course>();
}
public List<Course> GetCourseList()
{
return Courses;
}
public void AddCourse()
{
Course NewCourse = new Course();
NewCourse.Name = "New Course Added";
Courses.Add(NewCourse);
}
}
は最後に、ここに私のモデルがあります:
public class Course
{
public string Name { get; set; }
}
私はこのコードを使ってリストを表示することができましたが、リストから追加または削除したり、ボタンをクリックしてビューを更新することはできません。
public List<Course> Courses{
get{
return new List<Course>(){
new Course(){Name = "Added a course"}
};
}
リストの代わりにObservableCollectionを使用します。たぶんあなたはプロパティとしてそれを実行する必要があります。メソッドをバインドすることは決してありません。プロパティのみを使用することはできません。 Observableを使用する理由は、ビューが新しいアイテムを受信してビューを更新するときにビューに通知するためです。 –
チップをありがとう。私は今それを見るでしょう。 – johnZep