Я следую этому руководству по созданию моделей и ContentViews, но у меня возникают ошибки, когда я пытаюсь настроить некоторые имена классов и шаблоны, чтобы они больше соответствовали проекту, который я делаю.
Если я скопирую код точно из учебника, он будет работать нормально. Я думаю, что есть что-то настолько маленькое, что мне здесь не хватает, но я просканировал свой код более часа, и все выглядит хорошо.
Я получаю ошибку от MainPage, 2 выпуска
[0:] Binding: 'SelectedItem' property not found on 'testProject_xamarin.MainPage', target property: 'Xamarin.Forms.ListView.SelectedItem'
[0:] Binding: 'listBands' property not found on 'testProject_xamarin.MainPage', target property: 'Xamarin.Forms.ListView.ItemsSource'
У меня есть простой Band C# class ...
public class Band
{
public string Name { get; set; }
public string Genre { get; set; }
public string Description { get; set; }
}
BandViewModel. cs
public class BandViewModel
{
public IList<Band> listBands { get; set; }
public object SelectedItem { get; set; }
public BandViewModel()
{
listBands = new List<Band>();
GenerateBandModel();
}
private void GenerateBandModel()
{
string name = "Test";
string genre = "Music";
string description = "Description";
var band = new Band()
{
Name = name,
Description = description,
Genre = genre
};
listBands.Add(band);
}
}
Вот мой BandViewTemplate.xaml
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="testProject_xamarin.Templates.BandViewTemplate">
<ContentView.Content>
<Frame IsClippedToBounds="True"
HasShadow="True"
Padding="0"
BackgroundColor="White">
<Frame.Margin>
<OnPlatform x:TypeArguments="Thickness"
Android="10"
iOS="10"/>
</Frame.Margin>
<StackLayout Orientation="Horizontal">
<BoxView Color="Green" WidthRequest="6"/>
<Grid VerticalOptions="CenterAndExpand"
Padding="0"
HorizontalOptions="FillAndExpand"
BackgroundColor="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label FontAttributes="Bold"
Grid.Row="0"
HorizontalTextAlignment="Start"
VerticalTextAlignment="Center"
FontSize="16"
Text="{Binding Name, Mode = TwoWay}">
<Label.LineBreakMode>
<OnPlatform x:TypeArguments="LineBreakMode"
Android="NoWrap"
iOS="TailTruncation"/>
</Label.LineBreakMode>
</Label>
<BoxView Grid.Row="1" Color="Gray"
HorizontalOptions="FillAndExpand"
HeightRequest="1"/>
<Grid Grid.Row="2"
BackgroundColor="Transparent"
Padding="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0"
Grid.Column="0"
Text="User Age"/>
<Label Grid.Row="0"
Grid.Column="1"
Text="{Binding Description, Mode = TwoWay}"/>
</Grid>
</Grid>
</StackLayout>
</Frame>
</ContentView.Content>
</ContentView>
И, наконец, MainPage.xaml .. Именно здесь выдается ошибка.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:bandit_xamarin.Templates"
x:Class="testProject_xamarin.MainPage">
<StackLayout Orientation="Vertical">
<!-- Place new controls here -->
<Label Text="Welcome to Xamarin.Forms!"
FontAttributes="Bold"
FontSize="Medium"
VerticalOptions="Start"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
BackgroundColor="Transparent"
HorizontalOptions="CenterAndExpand" />
<ListView x:Name="listView"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
HasUnevenRows="True"
ItemsSource="{Binding listBands}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<local:BandViewTemplate/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
MainPage.xaml.cs
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
this.BindingContext = new BandViewModel();
}
}